This question already has answers here:
How to filter SQL results in a has-many-through relation
(13个答案)
11个月前关闭。
我有两个表
我想创建一个查询来获取所有既有桔子又有香蕉的
我如何制定我的查询来做到这一点?
只有一个条件我想:
(13个答案)
11个月前关闭。
我有两个表
user
和product
有一对多的关系(一个user
可能有多个product
s)。我想创建一个查询来获取所有既有桔子又有香蕉的
user
s。在下面的示例中,这将是john
和leeroy
。我如何制定我的查询来做到这一点?
只有一个条件我想:
SELECT * FROM "user"
INNER JOIN "product" ON "product"."fk_user" = "user"."id"
WHERE "product"."product" = 'banana';
user
表╔════╦═════════╗
║ id ║ name ║
╠════╬═════════╣
║ 1 ║ michael ║
╠════╬═════════╣
║ 2 ║ john ║
╠════╬═════════╣
║ 3 ║ leeroy ║
╠════╬═════════╣
║ 4 ║ tony ║
╚════╩═════════╝
product
表╔═════════╦═════════╗
║ product ║ fk_user ║
╠═════════╬═════════╣
║ orange ║ 1 ║
╠═════════╬═════════╣
║ orange ║ 2 ║
╠═════════╬═════════╣
║ banana ║ 2 ║
╠═════════╬═════════╣
║ banana ║ 3 ║
╠═════════╬═════════╣
║ orange ║ 3 ║
╠═════════╬═════════╣
║ banana ║ 4 ║
╚═════════╩═════════╝
最佳答案
可以使用两个连接:
SELECT u.*
FROM user u
INNER JOIN product p1
ON p1.fk_user=u.id
AND p1.product='banana'
INNER JOIN product p2
ON p2.fk_user=u.id
AND p2.product='orange'