我有桌子:
表站点
╔════╦═══════════════╗
║ ID ║ NAME ║
╠════╬═══════════════╣
║ 1 ║ stackoverflow ║
║ 2 ║ google.com ║
║ 3 ║ yahoo.com ║
║ 4 ║ cnn.com ║
╚════╩═══════════════╝
表格小部件
╔════╦════════════╗
║ ID ║ NAME ║
╠════╬════════════╣
║ 1 ║ polling ║
║ 2 ║ comments ║
║ 3 ║ newsletter ║
║ 4 ║ mail ║
╚════╩════════════╝
表站点小部件
╔═════════╦═══════════╗
║ SITE_ID ║ WIDGET_ID ║
╠═════════╬═══════════╣
║ 1 ║ 1 ║
║ 1 ║ 2 ║
║ 2 ║ 2 ║
║ 2 ║ 3 ║
║ 4 ║ 2 ║
║ 3 ║ 1 ║
║ 3 ║ 3 ║
║ 1 ║ 4 ║
║ 3 ║ 4 ║
║ 4 ║ 1 ║
║ 4 ║ 4 ║
╚═════════╩═══════════╝
我想获得所有带有评论 (2) 和邮件 (4) 的网站。
我尝试:
SELECT * FROM Site
LEFT JOIN SiteWidget ON Site.id = SiteWidget.site_id
WHERE SiteWidget.widget_id IN (2, 4)
但这让我返回 stackoverflow (2, 4 - OK), google.com (2 - NOT OK - without 4), yahoo.com (4 - NOT OK, without 2) 和 cnn.com (2, 4 - OK)。我怎样才能获得所有带有 2 和 4 的网站?永远在一起,而不是一个人。