1
我在2周前发布了一个关于SQL表之间'一对多'关系的问题。现在我有一个不同的场景。基本上,有两个表 - coffee_users和coffee_product_registrations。后者通过'uid'列连接到coffee_users表。所以基本上coffee_users.uid = coffee_product_registrations.uid在mysql中使用JOIN和子查询
单个用户可以注册多个产品。
我想要做的是显示一些产品信息(来自coffee_product_registrations)以及一些用户信息(来自coffee_users),但只检索那些有多个产品注册的行。
所以为了简化,这里有我需要采取的步骤:
- 加入两个表
- 有多个产品注册
- 显示所有的产品与他们的名字和东西 一起选择用户
我现在的SQL查询看起来是这样的:
SELECT c.uid, c.name, cpr.model
FROM coffee_users c
JOIN coffee_product_registrations cpr on c.uid = cpr.uid
GROUP BY c.uid
HAVING COUNT(cpr.uid) > 1
这加入'uid'列上的两个表,但每个用户只显示1行。它只选择有多个产品注册的用户。
现在我需要取这些ID并根据它们从coffee_product_registrations中选择所有产品。
我无法弄清楚如何把它放在一个查询中。
返回一个空的结果。那么我应该有2个内部联接吗?我可以没有吗? – Bravi
好吧,我现在要做。谢谢 – Bravi
http://sqlfiddle.com/#!2/59078是sqlfiddle。我创建了2个用户名 - user1和user2。 user1在coffee_product_registrations下注册了2个产品,user2只有1个。因此,查询应选择user1的所有产品,并显示除user1的电子邮件和ID之外的两个产品。 – Bravi