0

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

订单可能包含:

  • 门票(或没有门票),
  • 质押类型ID(或没有质押类型ID)

一个订单可能只有一个额外的捐赠金额,没有票 (tickets.order_=order_id) 和没有承诺 (pledge_type_id)。它仍然应该显示...

问题:

但是,没有票证的订单(具有承诺类型 ID承诺类型 ID=0 和附加捐赠=[某个数字]未显示

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

谢谢!

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

(它不允许 meto 上传数据(太大)所以这里是 db+data 的 sql: http: //cypgala.com/developer_notes/cypgala_experimental_db.sql(我用假名替换了真实姓名/电子邮件))

4

1 回答 1

0

您可能在其中一个表(主机或承诺类型)中没有该订单的对应元组。在这些表上尝试 RIGHT JOIN。

于 2013-07-16T14:37:19.680 回答