簡體   English   中英

在關系表中顯示至少出現一次的行?

[英]Show rows with at least one occurrence in a relation table?

我有以下表架構:

user (id, name, alias, password, active, mail, age)
comment(id, news(FK), user(FK), text, date)
new_cat(news(FK), category(FK))

我正在嘗試選擇所有評論過至少一個new的每個category的用戶。

這就是我沒有成功的嘗試:

SELECT * FROM user AS u, comment AS c
WHERE u.id = c.user AND c.news IN (SELECT news FROM new_cat);

我相信這沒有正確迭代並檢查每個category ,只是檢查條件是否僅適用於一個category

我怎樣才能正確地做到這一點?

加入表,按用戶分組並在HAVING子句中設置條件。

如果有一個存儲所有類別的category表:

SELECT u.*
FROM user u
INNER JOIN comment c ON c.user = u.id
INNER JOIN new_cat n ON n.news = c.news
GROUP BY u.id
HAVING COUNT(DISTINCT n.category) = (SELECT COUNT(*) FROM category);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM