0

人々の注文を保存する MySQL データベースがあります。

注文内容:

  • チケット(またはチケットなし)、
  • pledge_type_id (または pledge_type_id なし)

注文には、追加の寄付額のみがあり、チケット (tickets.order_=order_id) と誓約 (pledge_type_id)はありません。まだ表示されているはずです...

問題:

ただし、チケットのない注文( pledge_type_idまたはpledge_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 +データのSQLは次のとおりです:http: //cypgala.com/developer_notes/cypgala_experimental_db.sql(実名/電子メールを偽物に置き換えました))

4

1 に答える 1

0

おそらく、これらのテーブル (hosts または pledge_types) のいずれにも、その注文に対応するタプルがありません。これらのテーブルで RIGHT JOIN を試してください。

于 2013-07-16T14:37:19.680 に答える