微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MySQL连接三个表并显示0(如果为null)

我有三个表:

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

结果是:

enter image description here

那到底是你的追随?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐