# sql  Select auf Tabelle ohne Spaltennamen zu kennen



## StefanLausL (25. Mai 2009)

HAllo,

folgendes Problem:

aus einer View erhalte ich den Wert [Spaltenname2].
Nun möchte ich in der selben View einen Unterselect starten
der aus einer Tabelle genau diese Spalte ausliest.

Also von der Spalten ist mir ja die ID und der Name bekannt.
Ich bräuchte also so was wie "Select * from Tabelle where column_name = 'Spaltenname2'

Kann mir hier jemand helfen ?
Also als Skript könnte ich das schon bewerkstelligen ich möchte das aber in einer View haben.

Danke schon mal im Voraus.


----------



## vop (26. Mai 2009)

Sorry, aber ich glaube ich verstehe nicht ganz

Also, du hast eine Tabelle (oder View), in der es eine Spalte 
"column_name" gibt, aus der möchtest du alle Zeilen auslesen, für die column_name einen bestimmten Wert hat?

Du meinst nicht etwa
SELECT Spaltenname2 FROM Table...?

Bitte erkläre mir dein Problem genauer...


----------



## StefanLausL (26. Mai 2009)

JA genau.

Also es gibt eine Tabelle mit Spaltennamen:

ID,
Name,
Ort

Aus der View erhalte ich den Wert Ort (Spalte3).
Nun möchte ich den Inhalt aus Ort (Spalte3 der Tabelle auslesen).
Wenn ich den Wert ID aus der View erhalte möchte ich dessen Spaltenwert auslesen.


----------



## vop (26. Mai 2009)

Nochmal Sorry!

Bitte gib doch mal ein konkretes Beispiel für mich an, mit Testdaten und so. Ich habe immer noch nicht genau verstanden, was du eigentlich willst (bin schon so alt....)

Vielleicht kann ich dir dann helfen.
vop


----------



## StefanLausL (26. Mai 2009)

Also ich versuch das mal mit nem "statischen" SELECT zu erklären.


SELECT 
     v.ID
     ,'Name'
     ,(SELECT 
           Name 
      FROM
           tTable
      WHERE
           ID = v.ID) FeldWert
FROM
    vView v

So sollte das Ergebnis aussehen.
Wenn ich den Wert 'Ort' aus der View erhalte möchte ich die Spalte [Ort]
aus der Tabelle selektieren.

Also nocheinmal.

Die Frage lautet:

Wenn ich eine Spaltenbezeichnung aus einer View heraus erhalte,
wie kann ich diese Spalte selektieren  ?


----------



## StefanLausL (26. Mai 2009)

Also hab das Problem jetzt doch per Skript gelöst.

Aber falls es doch eine andere Lösung gibt kannst mir dann bitte Bescheid geben ?


Danke !


----------



## dbwizard (26. Mai 2009)

StefanLausL hat gesagt.:


> Also hab das Problem jetzt doch per Skript gelöst.
> 
> Aber falls es doch eine andere Lösung gibt kannst mir dann bitte Bescheid geben ?
> 
> ...



Hallo,

Also, ich muss gestehen, dass ich auch etwas ratlos vor deiner Problembeschreibung gestanden habe...

Willst du etwa so etwas ? : 


```
SELECT v.ID, t.Name FROM vView v, ttable t
WHERE v.id=t.id
AND v.id=FeldWert;
```


Gruss


----------



## deepthroat (26. Mai 2009)

Hi.

Ja, die Problembeschreibung ist etwas - äh - suboptimal 

Ich nehme an, das er etwas will wie:

```
result = select xyz from view;

select $result from table;
```
Also das Resultat einer Abfrage (der Einfachheit halber nur ein Datensatz mit einer Spalte) soll dann als Name einer Tabellenspalte interpretiert werden für eine neue Abfrage. Liefert also die erste Abfrage den (einzelnen) Wert "Strasse", soll dann eine Abfrage auf die Spalte 'Strasse' erfolgen.

Grundsätzlich geht das nicht. Man muß das immer in irgendeiner Weise skripten, da man das zweite Select Statement erstmal zusammenfügen muss.

Gruß


----------



## dbwizard (26. Mai 2009)

deepthroat hat gesagt.:


> Hi.
> 
> Ja, die Problembeschreibung ist etwas - äh - suboptimal
> 
> ...



- Ja, dass könnte die richtige Interpretation sein...Dann wäre Dynamic SQL hilfreich...nun kommt es natürlich auf das verwendete DBMS an..


----------



## StefanLausL (26. Mai 2009)

JA genau.

result = select xyz from view;
select $result from table;

So was in der Art hab ich gesucht.
Eben nur direkt in einer View und nicht als Skript


----------



## dbwizard (26. Mai 2009)

StefanLausL hat gesagt.:


> JA genau.
> 
> result = select xyz from view;
> select $result from table;
> ...



Ja, da wirst du Dynamic SQL verwenden müssen....welche Db verwendest du ?

Gruss


----------



## StefanLausL (26. Mai 2009)

SQL-Server 2000.

Habs bereits als Skipt umgesetzt.

Danke für Eure Mühe !


----------

