2013-07-31 4 views
0

Запрос # 1:Самый эффективный/лаконичный способ комбинирования запросов с фильтром?

SELECT 

destination_content.content, 
destination_content.state 

FROM destination_content 

дает мне

State Content 
AZ  Lorem 
AZ  Ipsum 
AZ  Dolor 
NC  Sit 
NY  Blabla 

Query # 2:

SELECT 

properties.state, 
properties.name 

FROM properties 

WHERE properties.active = 1 

дает мне

State Content 

AZ  Ritz Carlton 
AZ  Hotel Malala 
NY  Gilt NY 

Я хочу объединить запрос # 1 для запроса # 2, так что:

Я получаю результаты запроса # 1, но он фильтруется так, что результат для

NC Sit 

не будет отображаться.

Конечный результат должен быть:

State Content 

AZ  Lorem 
AZ  Ipsum 
AZ  Dolor 
NY  Blabla 

не появляется, потому что нет активной собственности в Северной Каролине. Поэтому я хочу фильтровать по состояниям активных свойств.

Что является наиболее кратким способом комбинирования этих запросов?

EDIT: Может быть, мой мозг не работает банкомат, но я попытался INNER JOIN properties ON (destination_content.state = properties.state), но это дает мне больше строк результатов, чем мне нужно. Первоначально я возвращаюсь назад 230, потому что есть 230 частей контента, но после этого соединения он становится около 1000. Что я забыл?

+0

Вы уже пробовали присоединиться к двум столам? Или: Что вы пробовали до сих пор? –

+0

Да, я что-то забываю, тьфу. –

+0

Вы должны быть более осторожны при отправке примеров в SO. Вы выбираете имя состояния и в результате у вас есть состояние контента и т. Д. ... –

ответ

1

Вы должны присоединиться к таблицам:

SELECT dc.content, dc.state 
FROM destination_content dc 
INNER JOIN properties p ON (dc.state = p.state AND dc.content = p.content) 
WHERE p.active = 1 

Это должно быть намного проще BTW для объединения таблиц, если вы хотите иметь первичный ключ (ID) в каждой таблице.

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