小编Mik*_*e K的帖子

MySQL多个左外连接查询问题涉及3个表

由于0回复,我猜我的LEFT JOIN问题涉及太深奥的数据库太详细了.我已经围绕这个问题进行了编程,但我仍然想知道如何加入类似的场景:

假设一个基本的代理键策略(每个表都有一个只是自动递增的id字段),以及它明显的父类的外键.全部大写的单词可以被视为表格.

假设您有一个包含DOGS的数据库.例如:Wolfie,Winston,Butch和Benny

每个DOG都有FLEA.(为简单起见,我们可以让一只跳蚤只生活在一只狗身上,并留下一对多的关系).跳蚤有名字或其他任何东西,以及它们的颜色.

每个FLEA将多次BITE它的DOG主机,并存储在此数据库中,并每天记录.
字段ID(PK),跳蚤ID(FK),日期,times_bitten.

假设您想获得每条狗被咬的总次数(这很容易)

SELECT Dog.Name, sum(Bite.times_bitten)
FROM Dog, Flea, Bite
WHERE Dog.id = Flea.Dog_id and Bite.id = Flea.Bite_id
GROUP BY Dog.Name
Run Code Online (Sandbox Code Playgroud)

让我们说你要为"WHERE"条款添加标准,将其限制为"布朗"跳蚤,而没有"布朗"跳蚤有点像本尼.

SELECT Dog.Name, sum(Bite.times_bitten)
FROM Dog, Flea, Bite
WHERE Dog.id = Flea.Dog_id and Bite.id = Flea.Bite_id and Flea.color = "Brown"
GROUP BY Dog.Name
Run Code Online (Sandbox Code Playgroud)

班尼不在结果中

你将如何重写查询,以便Benny的名字仍然显示,在总和中提供0(最好)或NULL,而不是仅仅从结果中完全取消Benny?

这似乎是关于多个左外连接..但是有这样的多个表,很容易找到的文档似乎没有回答涉及3个表的问题,在3个表的中间有一个值过滤器.

有没有人有关于如何重写这个允许多个左外连接的建议,或者有一些其他方法在查询中保留所有狗的名字,即使sum = 0?

mysql

9
推荐指数
1
解决办法
3万
查看次数

标签 统计

mysql ×1