2013-04-06 23 views
9

'daki iki SELECT sorgusunu birleştirin İki seçim sorgusunu UNION ile birleştirmek istiyorum.
İkinci SELECT ilk SELECT numaralı telefondan sonucu nasıl kullanabilirim?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

Gerçekten neyi başarmak istiyorsunuz, bu basit bir JOIN veya bir Subquery ile olabilir (yalnızca gerekli ayrıntıları almak istiyorsanız), ayrıca her iki sorgunun sütunları da eşleşmiyor! – Akash

+0

Tek gereksinim olan ilk SELECT – Bwyss

+0

koşulunu karşılayan tablo2'deki tüm kayıtları almak istiyorum http://www.postgresql.org/docs/8.3/static/tutorial-join.html – Akash

cevap

9

birden fazla SELECT bir alt sorgu sonucunu yeniden bir CTE kullanın.
Bunun için PostgreSQL 8.4+ gerekir:

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 

En büyük olasılıkla UNION ALL yerine UNION istiyorum. Çiftleri hariç tutmaz ve bu şekilde daha hızlıdır.