7. Czy można budować kwerendy zagnieżdżone w Accessie?

Każdy, kto napisał w Accessie 97:
SELECT * FROM (SELECT Pole1  FROM Tabela1)
wie, że w Accessie nie można budować kwerend zagnieżdżonych, bo jedyne, co uzyskamy z tej kwerendy, to komunikat o błędzie. Tymczasem... okazuje się, że można!!!

Kto by na to wpadł (no, chyba tylko Krzysztof Naworyta, patrz archiwum), że wystarczy zamienić nawiasy okrągłe na kwadratowe z kropką i już wszystko gra.  Czyli prawidłowo nasza kwerenda powinna wyglądać tak:
SELECT * FROM [SELECT Pole1 FROM Tabela1]. As Q1
...i otrzymujemy łatwy sposób na budowanie kwerend zagnieżdżonych.

Niestety w Accessie 97 nie można wewnątrz tworzyć nowych zagnieżdżeń ani używać nawiasów kwadratowych. No... ale za to w Accessie 2000 (i wyższych wersjach) wydaje się, że nie mamy już żadnych ograniczeń.

a W Accessie 2000 działa nawet taka kwerenda, która w poprzedniej wersji nie miała szans, bo zawiera wewnątrz [Pole 1] w nawiasach kwadratowych:
SELECT * FROM [SELECT Pole1 as [Pole 1] FROM Tabela1]. AS T1;
Uwaga, jest mały cyrk:  Aby zapisać tę kwerendę, należy wewnętrzny select umieścić w nawiasach okrągłych, inaczej Access zgłosi błąd. Access sam musi sobie przerobić nawiasy () na []. Czyli my zapisujemy tę kwerendę w następującej postaci:
SELECT * FROM (SELECT Pole1 as [Pole 1] FROM Tabela1) AS T1;

a W Accessie 2000 bez problemów możemy budować kwerendy wielokrotnie zagnieżdżone, np:

SELECT *
FROM [SELECT *
FROM (SELECT *
FROM (SELECT Pole1 as [Pole 1]
FROM Tabela1) AS A) AS B]. AS C;
Jest tu jasna zasada i łatwo ją zauważyć.  Widać, że tylko pierwsze zagnieżdżenie musi być w nawiasach kwadratowych z kropka, a dalsze zagnieżdżenia już są budowane za pomocą zwykłych nawiasów, tak jak w standardzie SQL.

Krzysztof Pozorek