MySQL视图中缺少数据
我在MySQL数据库中设置了一个视图。该视图引用多个相关表并将它们连接在一起。下面是一个select语句作为示例进行说明:MySQL视图中缺少数据,mysql,Mysql,我在MySQL数据库中设置了一个视图。该视图引用多个相关表并将它们连接在一起。下面是一个select语句作为示例进行说明: SELECT orders.id, orders.`name`, orders.total, line_items.id, line_items.order_id, line_items.sub_total, order_fees.id, order_fees.order_id, order_f
SELECT
orders.id,
orders.`name`,
orders.total,
line_items.id,
line_items.order_id,
line_items.sub_total,
order_fees.id,
order_fees.order_id,
order_fees.`name`,
order_fees.fee
FROM
orders
INNER JOIN line_items ON line_items.order_id = orders.id
INNER JOIN order_fees ON order_fees.order_id = orders.id
我遇到的问题是,订单可能会或可能不会有额外的相关费用。似乎发生的情况是,当order_fees表中给定的订单不存在任何记录时,select语句将不会返回订单
如何设置此选项,以便从查询返回所有订单,而不管是否存在关联的记录?使用
左联接
而不是内部联接
:
SELECT
orders.id,
orders.`name`,
orders.total,
line_items.id,
line_items.order_id,
line_items.sub_total,
order_fees.id,
order_fees.order_id,
order_fees.`name`,
order_fees.fee
FROM
orders
Left JOIN line_items ON line_items.order_id = orders.id
Left JOIN order_fees ON order_fees.order_id = orders.id
用户离开外部联接而不是内部联接。当您执行内部联接时,它将只返回两个表中可用的记录。如果使用左外联接,则它将返回左表中的所有记录。Yay!非常感谢。成功了!顺便说一句,我会投票给这个答案,如果我不只是一个声誉点可以这样做。谢谢,对不起。。。作为一个用户而不仅仅是一个空闲的读卡器来堆叠Exchange是非常新的。