SQL 查询返回填充的整个表的 Null



我是MySQL和数据库的菜鸟,但我试图通过创建一些虚构的数据库来做得更好。我正在尝试使用 JOIN 查询从 4 个不同的、完全填充的表中提取数据。用:

SELECT orders.OrderID,orders.customerID,orders.orderdate,orders.notes, Customer.*, orderitem.qty, donut.*
FROM Customer INNER JOIN OrderItem
Left Join orders ON customer.customerID = orders.orderID
AND orders.orderID = orderitem.OrderID
Left JOIN donut ON orderitem.donutID = donut.donutID
WHERE orders.customerID = 002  or customer.customerID = 001  ;

使用它,我从有 4 列的"订单"表中获取所有 NULL。其中每一列都有数据。

我知道(我认为)这是"来自客户内部加入订单项目"的问题左联接订单 ON 客户.客户ID = 订单.订单 ID",因为如果将其切换到右联接,它会填充"订单"表信息,并使所有其他表返回 NULL。我完全不知所措。

这是一个

不太可能join条件:

 ON customer.customerID = orders.orderID

你可能的意思是:

 ON customer.customerID = orders.CustomerID

因为您正在查看订单信息,所以我建议使用内部连接:

SELECT o.OrderID, o.customerID, o.orderdate, o.notes, c.*, oi.qty, d.*
FROM Customer c INNER JOIN
     orders o
     ON c.customerID = o.customerID INNER JOIN
     OrderItem oi
     ON o.orderID = oi.OrderID LEFT JOIN
     donut d
     ON oi.donutID = d.donutID
WHERE c.customerID IN ('001', '002');

我不确定甜甜圈如何适应,所以这仍然是一个left join. 我将客户 ID 放在单引号中。 如果有前导零,那么它们可能是字符串。

最新更新