1
我區的表:MySQL的JOIN + COUNT + WHERE +和
table region:
id | title
地區有許多廣告:
table advert:
id | region_id | ...
然後廣告有很多用途(多對多通過表adv_use):
table use:
use | slug | ...
----------------
1 | slug_1 | ...
2 | slug_2 | ...
..................
table adv_use:
adv_id | use_id
我想要選擇所有具有count(*)個廣告的區域,這些廣告使用了slug_1和slug_2。如果廣告對slug_1或slug_2(或兩者)沒有用處,則不得計算在內。 我現在擁有的一切:
SELECT COUNT(DISTINCT advert.id) as count
FROM region
JOIN advert ON region.id = advert.region_id
JOIN adv_use ON advert.id = adv_use.adv_id
JOIN use ON adv_use.use_id = use.id
WHERE use.slug IN ('slug_1', 'slug_2')
GROUP BY region.id
HAVING COUNT(DISTINCT adv_use.use_id) = 2
但它的工作不是我想要的。 SQLFiddle:http://sqlfiddle.com/#!2/5b4d4/1
感謝您的幫助和對英語不好的抱歉。
你不能指望'advert.id'如果你也有'advert.id'在'GROUP BY'。 – Barmar
如果我從GROUP BY中刪除它,它仍然是錯誤的。它是忽略HAVING語句並僅通過use.slug IN('slug_1','slug_2') – Phantaminuum
SQLFiddle:http://sqlfiddle.com/#!2/5b4d4/1 – Phantaminuum