# Syntax für Abfrage auf Abfrage



## LupoDerWolf (10. Juli 2004)

Hallo,

ich muss eine Abfrage erstellen, die Daten aus einer anderen Abfrage ausliest. Diese 2. Abfrage kann aber nicht als Datenbankobjekt gespeichert werden.

Es müsste also etwas geben wie:

Select [etwas] 
From [Select irgendwas from Tabelle]

Also: wenn die 2. Abfrage als DB-Objekt gespeirt wird, kann ich einfach den Namen in die From-Klausel setzen. Da ich sie aber dynamisch ist, kann ich sie nicht abspeichern und ich muss alles in einem SQL-Objekt machen.

Weiß einer, wie das geht?


Grüße

LupoDerWolf


----------



## melmager (10. Juli 2004)

Ja genauso wie du es vermutet hast geht es:

Select feld from tabellea where id = (select nr from tabelleb where ... )

Kommt aber auch darauf an welche DB du benutzt bei Mysql Version 3.X geht noch kein
Subselect


----------



## LupoDerWolf (10. Juli 2004)

Danke, aber so meinte ich es nicht...

Als Sub-Select in der Where-Klausel, das kannte ich schon. Das ist aber nicht das Thema, sondern folgendes:

Ich kann in Access eine Abfrage auf Tabellen oder Abfragen machen.
In beiden Fällen habe ich normalerweise die Tabelle oder die Abfrage als Datenbankobjekt.

Beispiel:
Afrage1 heißt q_Kunden: "Select * from T_Kunden"
Afrage2: "Select * from q_Kunden"
Das geht, weil q_Kunden als Datenbankobjekt gespeichert ist.

Mein Problem:
Ich kann die Abfrage 1 nicht als Datenbankobjekt speichern, habe also keinen Namen, den ich referenzieren kann. Ich jabe nur deren SQL-String:"Select * from T_Kunden".

Wenn ich nun Abfrage 2 auf Abfrage 1 bauen will, wie ist dass die Systax?
Was müsste ich statt "Select * from q_Kunden" schreiben? 
"Select * from ?"

Gibt es dazu überhaupt eine Lösung?

Grüße


----------



## Gorcky (11. Juli 2004)

Also, was du da geschrieben hast geht auch genau so:





> Select [etwas]
> From [Select irgendwas from Tabelle]


 Das wäre dann, wie melmager schon gesagt hat, ein Subselect.

SELECT * FROM (SELECT * FROM tabelleyx Bedingung = irgendwas) WHERE Bedingung = irgendwasanderes

Damit hättest du doch genau das, was du bräuchtest, oder ?
Das Subselect gibt eine temporäre Tabelle zurück, in der das "obere" Select ausgeführt wird.


----------



## LupoDerWolf (12. Juli 2004)

Ah.... Klasse!

Natürlich!

Ich hatte die Klammern falsch gesetzt... Darum ging's erst nicht.

Schönen Dank!


----------

