我有三个表:
person_table
id| name | gender
1 | Joe | male
2 | Jane |female
3 | Janet | female
4| Jay | male
etc…
product_table
id| name
1 | magazine
2 | book
3 |paper
4 | novel
etc…
**person_product
person_id| product_id | quantity
1 | 1 | 1
1 | 3 | 3
2 | 3 | 1
4 | 4 | 2
etc…
我试图进行查询,将返回这样的表:
person_id |人名|产品名称|数量
但是我做不到,所以如果说约翰没有书,它应该显示
(johns id)John | book | 0
而不只是跳过这一行.
我哪里做错了?
这是我设法想出的:
SELECT p.*, f.name, l.quantity
FROM person_product AS l
INNER JOIN people_table AS p ON l.person_id=p.id
INNER JOIN product_table AS f ON l.product_id=f.id
ORDER BY id`
解决方法:
您似乎正在针对所有具有相关数量的产品生成所有人员的报告;在大型数据集上,这可能需要一段时间,因为您不是将数量以外的其他任何人具体地加入产品:
SELECT
p.id,
p.name,
p.gender,
f.name,
IFNULL(l.quantity,0) AS quantity
FROM person_table AS p
JOIN product_table AS f
LEFT JOIN person_product AS l
ON l.person_id = p.id
AND l.product_id = f.id
ORDER BY p.id, f.name
结果是:
那到底是你的追随?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。