X

Aleproste na FaceBook'u

Reklama.

[PHP][MySQL] Zapytania MySQL w PHP :: podzapytania

Podzapytanie w sekcji WHERE

SELECT kolumna FROM tabela1
WHERE kolumna_id IN ( SELECT kolumna_id FROM tabela2)

Warunek przeciwny:

SELECT kolumna FROM tabela1
WHERE kolumna_id NOT IN ( SELECT kolumna_id FROM tabela2)

Podzapytanie z klauzulą EXISTS:

SELECT kolumna FROM tabela1
WHERE EXISTS ( SELECT kolumna_id FROM tabela2 WHERE kolumna_id = tabela1.kolumna_id)

Analogiczne podzapytanie przeciwne z klauzulą EXISTS:

SELECT kolumna FROM tabela1
WHERE NOT EXISTS ( SELECT kolumna_id FROM tabela2 WHERE kolumna_id = tabela1.kolumna_id)

Podzapytanie w sekcji SELECT. Tego typu zapytanie złożone, daje nam dostęp do wartości kolumn tabel wywołanych w podzapytaniu.

SELECT kolumna1, 
   (SELECT kolumna FROM tabela2 WHERE kolumna_id = tabela1.kolumna_id)
FROM tabela1
WHERE ...

Podzapytań może w każdym przypadku ( w sekcji SELECT i w sekcje WHERE) może być więcej niż jedno.

SELECT kolumna1, 
   (SELECT kolumna FROM tabela2 WHERE kolumna_id = tabela1.kolumna_id),
   (SELECT kolumna FROM tabela3 WHERE kolumna_id = tabela1.kolumna_id),
   ...
FROM tabela1
WHERE ...
SELECT kolumna FROM tabela1
WHERE kolumna_id IN ( SELECT kolumna_id FROM tabela2) AND 
   kolumna_id2 IN ( SELECT kolumna_id FROM tabela3) ....

Należy zawsze pamiętać o tym, że aby móc odwołać się później do kolumny utworzonej przez wyrażenie lub podzapytanie należy przypisać jej alias.

SELECT kolumna1, 
   (SELECT kolumna FROM tabela2 WHERE kolumna_id = tabela1.kolumna_id) AS alias1,
   (SELECT kolumna FROM tabela3 WHERE kolumna_id = tabela1.kolumna_id) AS alias2,
   ...
FROM tabela1
WHERE ...

opublikowane 28-02-2011173223 powrót

© aleproste.pl v.10 Projekt i realizacja projekt.etvn.pl & aleproste.pl