# Abfragen Verschachteln, wie?



## mavebox (17. Mai 2005)

Hallo

In Access habe ich eine Anfügeabfrage die auf eine
Tabelle und eine Auswahlabfrage basiert. Nun, mit
Access ist das ja kein Problem. Wie führe ich sowas
mich SQL DB aus? Ich sehe da ein Problem mit der
verschachtelung einer Auswahlabfrage....

So sieht der Code in Access:

INSERT INTO Strukturliste ( KdNr, Stufe, Up, Sort )
SELECT Struktur.KdNr, Struktur.Stufe, Struktur.Up, Left([Strukturliste_Kopie]![Sort],7)+String(6*(4-[Struktur]![Stufe]),"0")+Format([Struktur]![KdNr],"000000")+String(6*([Struktur]![Stufe]-1),"0") AS Sort
FROM Struktur INNER JOIN Strukturliste_Kopie ON Struktur.Up = Strukturliste_Kopie.KdNr
WHERE (((Strukturliste_Kopie.Stufe)=5))

Legende:
Strukturliste.Kopie = Auswahlabfrage auf Tabelle Strukturliste



Für eure prompte Hilfe wäre ich seeehr dankbar!

Grüsse
Marc


----------



## Nico Graichen (17. Mai 2005)

Hi, wo soll das Problem sein?
Hast du das SELECT schon mal ausgeführt? Wenn ja, was kommt als Fehler?
Normalerweise sollte es keine Probleme mit Subselects geben. Das einzige, was passieren kann, ist, dass es vielleicht einige Funktionen im SQL-Server nicht gibt bzw diese dort anders heißen.


----------



## andi_g69 (18. Mai 2005)

Das geht im SQL Server nicht, da man hier keine Queries abspeichern kann. Es gibt aber dennoch Möglichkeiten, Unterabfragen zu realisieren:

1) Man legt für die Unterabfrage einen View an (Unterschied zur Access Abfrage ist, dass ein View keine Parameter akzeptiert)

Das geht dann so in der Art:

CREATE VIEW myView AS
SELECT col1, col2 FROM Tabelle1

Und verwendet den View dann wir folgt:
SELECT * 
FROM Tabelle2 t2
JOIN myView t1 ON t1.Col1 = t2.col1

2) Du benutzt eine sog. derived Query

SELECT *
FROM Tabelle2 t2
JOIN (SELECT Col1, Col2 FROM Tabelle1) t1 ON t1.Col1 = t2.Col1

Ich hoffe das hilft?


----------

