我正在运行下面的查询,它运行得很好。
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中模拟完整的外部连接