2016-02-28 2 views
0

У меня есть несколько таблиц с одинаковыми полями первичного ключа, но не у всех одинаковых полей. Я хочу, чтобы выбрать коллекцию столбцов из всех таблиц соответствия конкретного первичного ключа, что-то вроде этого: (спасибо! @Abelisto)Выбор столбцов из нескольких таблиц

SELECT T1.a, T2.b, ..., TN.z FROM T1, T2, ..., TN WHERE T1.pk = "abc" 
+0

Вы пытались использовать 'join'? 'select ... from t1 join t2 на t1.id = t2.id ...'? – sgeddes

ответ

2
SELECT T1.a, T1.b, ..., TN.z 
FROM T1 INNER JOIN T2 ON T1.pk = T2.pk 
INNER JOIN T3 on T1.pk = T3.pk 
... 
INNER JOIN TN on T1.pk = TN.pk 
AND TN.pk = "abc" 

Или в краткой форме.

SELECT T1.a, T1.b, ..., TN.z 
FROM T1 JOIN T2 using(pk) 
JOIN T3 using(pk) 
... 
JOIN TN using(pk) 
WHERE TN.pk = "abc" 
+2

Есть несколько вещей, позволяющих сделать запрос короче: в Postgres по умолчанию встроено внутреннее значение, поэтому 'INNER JOIN' равно' JOIN'; если столбцы имеют одинаковые имена, тогда можно написать 't1 join t2 с помощью (pk)' вместо 't1 join t2 на t1.pk = t2.pk' – Abelisto

Смежные вопросы