2013-04-25 9 views
2

Я пытаюсь отобразить несколько столбцов данных tableX, когда значение определенного столбца соответствует значению соответствующего столбца в tableY.Отображение условных данных SQL на основе нескольких таблиц и столбцов

Imagine у ​​нас есть 2 таблицы: один по имени person содержащей столбец с именем membershipid и другой названным tasks, содержащим столбец с именем memberid. В этом случае условие для отображения запись будет следующим:

membershipid на person = memberid на tasks

это требует ли использование JOIN оговорки или могу я использовать WHERE ключевое слово для этого?

Спасибо, что посмотрели.

+0

Какая СУБД вы используете? Postgres? Oracle? –

+0

Я использую Postgres для этой настройки. – speshock

+0

@speshock Помогла ли вам ответить на любой из ответов ниже? –

ответ

2

Из того, что я понял ваш вопрос, это звучит как да, вы будете нуждаться в INNER JOIN вытащить только те строки из tableX где есть соответствующее значение в объединенном столбце в tableY.

Так что-то вроде:

SELECT tableXcol1, tableXcol2, tableXcol3 
FROM tableX 
INNER JOIN tableY 
ON tableX.specific_column = tableY.specific_column 
1

Хотя это может быть сделано с where пунктами, я бы порекомендовал вам использовать соединение.

where стиль (не рекомендуется)

select t1.field1, t1.field2, ... 
from aTable as t1, anotherTable as t2 
where t1.field1 = t2.field1; 

join стиль (рекомендуется)

select t1.field1, t1.field2, ... 
from aTable as t1 inner join anotherTable as t2 on t1.field1 = t2.field1 
1

Если вам нужны только данные tableX но не из Tabley, делая JOIN скорее всего, даст вам дубликаты данных. Вместо этого используйте EXISTS, например.

SELECT person.col1, person.col2 
FROM person 
WHERE 
    EXISTS (
     SELECT 1 
     FROM tasks 
     WHERE 
      person.membershipid = tasks.memberid 
    ) 
Смежные вопросы