【问题标题】:Joining 4 tables in mySQL and including NULL values在 mySQL 中加入 4 个表并包含 NULL 值
【发布时间】:2019-02-25 03:20:29
【问题描述】:

我正在尝试列出客户订购的每种产品的所有客户姓名,并包括没有订单的客户。此外,如果客户多次订购相同的产品,请仅为该客户列出一次产品。

我已经设置了查询的开头,因此它显示了所有客户和订购的每个产品,但我似乎无法弄清楚如何添加具有 NULL 值的客户(意味着他们没有订购商品。)我知道左外连接应该以某种方式使用。这是我目前所拥有的:

select distinct
c.customerName, p.productName
from
products p, customers c, orders o, orderDetails d
left join 

【问题讨论】:

  • 查看表结构和所需结果的示例会很有帮助。
  • 这看起来像您在参考中看到的任何left join 示例吗? PS 阅读参考文献,join,您会看到逗号确实交叉连接,但优先级较低。所以join 连接首先完成。不要在同一个from 中使用, join。 PS 在代码问题中给minimal reproducible example
  • MySQL LEFT JOIN error的可能重复

标签: mysql select outer-join


【解决方案1】:

当使用left join 时,语法如下:

select distinct
c.customerName, p.productName
from customers c
left join order o on c.id = o.customer_id
left join orderDetails d on o.id = d.order_id
left join products p on p.id = d.product_id AND
          p.productName = 'cow'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 2023-03-23
    • 1970-01-01
    • 2011-07-11
    • 2020-06-01
    • 1970-01-01
    相关资源
    最近更新 更多