Объединить результат 2-х join

Рейтинг: 1Ответов: 1Опубликовано: 23.04.2015

Есть 2 таблицы
firm
id | title
1 | "t"
2 | "t2"

firm_property
id | firm_id | property_id
1 | 1 | 100
2 | 1 | 200
3 | 2 | 200

Мне надо получить список фирм, которые имеют property_id и 100 и 200.
Делал помощью LEFT JOIN вот так:

SELECT * FROM firm f
LEFT JOIN firm_property fp ON fp.firm_id = f.id AND fp.property_id = 100
LEFT JOIN firm_property fp1 ON fp1.firm_id = f.id AND fp1.property_id = 200

В итоге у меня выбирались все данные. Если заменить LEFT JOIN на INNER JOIN то вообще ничего не выбирается.
Хотелось бы как-нибудь объединить результаты 2-х INNER JOIN-ов.

Ответы

▲ 4

Если я правильно поняла, нужны фирмы со значениями и 100 и 200 (т.е. только 100 или только 200 не подходит). Если так, то это можно сделать следующим запросом:

SELECT firm_property.firm_id, firm.title
FROM  firm_property INNER JOIN
   firm ON firm_property.firm_id = firm.id
WHERE  (firm_property.property_id IN (100, 200))
GROUP BY firm_property.firm_id, firm.title
HAVING  (COUNT(*) = 2)