2つの表の自己結合を使用して1つの結果行を戻す問合せがあります。私が持っている問題は、seat1が空であれば何も返されないということです。LEFT/RIGHT JOINが空の行を戻さない
SELECT seat1.seat_type_id
, seat1.seat_type_qty
, seat2.seat_type_id
, seat2.seat_type_qty
FROM jos_sv_apptpro2_requests AS R
LEFT JOIN jos_sv_apptpro2_seat_counts AS seat1 ON R.id_requests = seat1.request_id
LEFT JOIN jos_sv_apptpro2_seat_counts AS seat2 ON R.id_requests = seat2.request_id
WHERE (seat1.seat_type_id = 6 AND seat2.seat_type_id = 7)
AND R.id_requests = 8703
AND R.resource = 3
これは返す必要があります:
seat_type_id 6
seat_type_qty 0 <= this is the empty row
seat_type_id1 7
seat_type_qty 1
EDIT: 私が今持っている:
SELECT
IFNULL(seat1.seat_type_qty,0) AS seat_type_qty,
IFNULL(seat2.seat_type_qty,0) AS seat_type_qty
FROM jos_sv_apptpro2_requests AS R
LEFT JOIN jos_sv_apptpro2_seat_counts AS seat1
ON R.id_requests = seat1.request_id AND seat1.seat_type_id = 6
LEFT JOIN jos_sv_apptpro2_seat_counts AS seat2
ON R.id_requests = seat2.request_id AND seat2.seat_type_id = 7
WHERE R.id_requests = 8696
REEDIT! - 私の誤りは、PHPのオブジェクトとしてseat_type_qtyを2回返すことです。今すぐソートされました - ありがとう!
あなたは美人です!ありがとうございます - 有益なテクニックを知りたい – Jeepstone
@Jeepstone:これは実際のテクニックではありません。一致しない場合にNULL値で行を塗りつぶし、すべての結合が実行された後にWHEREフィルターが適用されるのはOUTER JOIN操作です。 – Benoit
私は理解しています。私は今何が間違っているのか分からないが、期待していたよりも結果が少なくなっている。 – Jeepstone