繁体   English   中英

三表MySQL LEFT JOIN不返回不涉及一个表的行

[英]Three table MySQL LEFT JOIN not returning rows where one table isn't involved

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

订单可能包含:

  • 票(或没有票),
  • pledge_type_id(或没有pledge_type_id)

订单可能仅具有一个额外的 捐赠金额,即没有票据(tickets.order_ = order_id)和没有抵押(pledge_type_id) 它仍然应该显示...

问题:

但是, 没有票证的订单 (具有pledge_type_idpledge_type_id = 0且Additional_donation = [some number]不显示

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

谢谢!

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 + data的sql: http : //cypgala.com/developer_notes/cypgala_experimental_db.sql (我用伪造的实名/电子邮件代替了))

您可能在那些表之一(主机或pledge_types)中没有对应于该顺序的元组。 在这些表上尝试RIGHT JOIN。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM