我正在运行下面的查询,它运行得很好。

SELECT
    stock_parts.title,
    COUNT(*) as qtyAvailable,
    SUM(shipments.item_cost) as totalValue,
    ### stock_alerts.minimum
FROM
    stock_items
INNER JOIN stock_parts ON stock_items.stock_part_id = stock_parts.id
INNER JOIN shipments ON shipments.id = stock_items.shipment_id
### INNER JOIN stock_alerts ON stock_alerts.stock_part_id = stock_items.stock_part_id
WHERE
    stock_items.status IS NULL
    AND stock_items.current_stock_id = 1
GROUP BY stock_parts.id

因此,如果我取消注释这两行注释(是从另一个表获取信息的连接),查询结果将被过滤,只显示stock_alerts.minimum不为空的行。
为什么会这样?我需要列为空的所有结果事件。

最佳答案

INNER JOIN所做的是输出行结果,其中没有一个表在该单元格上有空值。换句话说(来自W3学校):
INNER JOIN关键字选择在
两张桌子
尝试使用FULL OUTER JOIN来获取所有记录,即使其中一个表的值为空。参见W3 Schools FULL OUTER JOIN的说明。
编辑:
我没意识到你的一个标签是MySQL。Here您有一篇文章解释了如何在MySQL中模拟完整的外部连接

10-05 23:09
查看更多