2013-04-06 17 views
9

Chciałbym połączyć dwa wybrane zapytania z UNION.
Jak mogę użyć wyniku z pierwszego SELECT w drugim SELECT?Połączyć dwa zapytania SELECT w PostgreSQL

(SELECT carto_id_key FROM table1 
    WHERE tag_id = 16) 
UNION 
(SELECT * FROM table2 
    WHERE carto_id_key = <the carto_id result from above>) 
+0

co właściwie chcesz osiągnąć, może to być proste JOIN lub Podzapytanie (jeśli chcesz uzyskać wymagane dane), również kolumny obu zapytań nie pasują !! – Akash

+0

Chcę uzyskać wszystkie rekordy w tabeli 2, które spełniają warunek pierwszego SELECT – Bwyss

+0

, jeśli jest to jedyne wymaganie, przeczytaj http://www.postgresql.org/docs/8.3/static/tutorial-join.html – Akash

Odpowiedz

9

Użyj CTE do ponownego użycia wynik z podzapytania w więcej niż jednym SELECT.
Trzeba PostgreSQL 8.4+ za to:

WITH x AS (SELECT carto_id_key FROM table1 WHERE tag_id = 16) 

SELECT carto_id_key 
FROM x 

UNION ALL 
SELECT t2.some_other_id_key 
FROM x 
JOIN table2 t2 ON t2.carto_id_key = x.carto_id_key 

Ty najprawdopodobniej chcą UNION ALL zamiast UNION. Nie wyklucza duplikatów i jest szybszy w ten sposób.

Powiązane problemy