三个表MySQL左连接不返回其中一个表为';不涉及

三个表MySQL左连接不返回其中一个表为';不涉及,mysql,Mysql,我有一个MySQL数据库,存储人们的订单 订单可能包含: 门票(或无门票) 质押类型标识(或无质押类型标识) 订单可能只有一笔额外捐赠金额无票(票。订单=订单id)和无质押(质押类型id)。它应该仍然显示 问题是: 但是,没有票证的订单(具有质押类型\u id或质押类型\u id=0且额外的\u捐赠=[一些数字])不会显示 如何修改此查询以返回这些行 谢谢 SELECT o.order_id, o.name_f, o.name_l, o.email, COUNT( * ) AS num_

我有一个MySQL数据库,存储人们的订单

订单可能包含:

  • 门票(或无门票)
  • 质押类型标识(或无质押类型标识)
订单可能只有一笔额外捐赠金额
无票(票。订单=订单id)和无质押(质押类型id)
。它应该仍然显示

问题是: 但是,没有票证的订单(具有质押类型\u id质押类型\u id=0且额外的\u捐赠=[一些数字])不会显示

如何修改此查询以返回这些行

谢谢

SELECT 
o.order_id, o.name_f, o.name_l, o.email, 
COUNT( * ) AS num_tix, 
h.name_f, h.name_l, 
o.additional_donation, 
p.title, p.price, 
o.donation_monthly_YN, 
o.process_step, 
o.paid_status_YNVRD

FROM orders o
LEFT JOIN tickets t ON t.order_id = o.order_id
LEFT JOIN HOSTS h ON h.host_id = o.host_id
LEFT JOIN pledge_types p ON p.pledge_type_id = o.pledge_type_id

WHERE o.gala_id =  '1'
GROUP BY o.order_id
ORDER BY o.deleted_YN ASC , datetime_created DESC 
这里有一把小提琴:sqlfiddle.com/#!2/1ea71/1


(它不允许我上传数据(太大),所以这里是db+数据的sql:(我替换了实名/电子邮件和伪造的邮件))

您可能在这些表(主机或质押类型)中没有相应的元组。在这些表上尝试右连接。

我看不出这个查询有什么问题。您确定问题出在查询上吗?如果是的话,考虑提供一个SqLoFdL.是的,我确信,因为在订单上做选择时显示的是行,而不是当您开始寻找承诺或票据时(如上文)。谢谢谢谢嗯,你的sqlfiddle中没有数据!?!提供一些样本数据,刚好能够恰当地代表您的期望输出。如果数据敏感,请使用虚构的数据。(它不允许我上传数据(太大),所以这里是db+数据的sql:(我替换了真名/电子邮件和假货))似乎右连接消除了更多行。好了!只要把正确的连接放在右边(没有双关语的意思),瞧!我已经导入了您的数据并运行了一些测试。看起来它工作得很好。你有147份订单。即使加入,你也会收到147份订单。我注意到的唯一奇怪的事情是,您有重复的订单,当您删除GROUPBY子句时,这些订单就会出现。