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

时间:2013-07-16 14:17:35

标签: mysql

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

订单可能包含:

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

订单可能只有 additional_donation 金额 NO票证(tickets.order_ = order_id)和NO pledge(pledge_type_id)。它应该仍然显示......

问题:

然而,没有门票的订单(具有 pledge_type_id pledge_type_id = 0且additional_donation = [某些数字] )< em>不显示。

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

谢谢!

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:http://cypgala.com/developer_notes/cypgala_experimental_db.sql(我用虚假替换真实姓名/电子邮件))

1 个答案:

答案 0 :(得分:0)

您可能在其中一个表(hosts或pledge_types)中没有该订单的相应元组。在这些桌子上尝试右边加入。