簡體   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