現在、左結合で2つのテーブルを結合しようとしています:
- ポータル -
- id_portal (インデックス)
- id_venue
- name_portal
- アクセス -
- id_access (インデックス)
- id_event
- id_ポータル
- id_チケット
- scan_access
「アクセス」には、各イベントのポータルごとに多数のチケット タイプが含まれています。これらを組み合わせて、各ポータルの scan_access 列の合計を取得する必要がありますが、scan_access が「null」のポータルを含めて「0」にする必要があります。これを達成するために、左結合を使用しました。
SELECT portal.name_portal, SUM(access.scan_access) AS total_scan
FROM portal LEFT JOIN access ON portal.id_portal = access.id_portal
WHERE portal.id_venue = $venueId
GROUP BY portal.id_portal
ORDER BY portal.id_portal ASC
つまり、次のようになります。
- ポータル 1 - ヌル
- ポータル 2 - 40
- ポータル 3 - 33
- ポータル 4 - ヌル
しかし、イベント (id_event) を考慮して上記の結果も取得する必要がある場合に問題があります。
SELECT portal.name_portal, SUM(access.scan_access) AS total_scan
FROM portal LEFT JOIN access ON portal.id_portal = access.id_portal
WHERE portal.id_venue = $venueId AND access.id_event = 20
GROUP BY portal.id_portal
ORDER BY portal.id_portal ASC
私は得る:
- ポータル 2 - 40
- ポータル 3 - 33
id_event 値を持つ行は 2 つだけなので、これは理にかなっています。しかし、他のポータルを失わずにこの列を考慮するにはどうすればよいでしょうか? また、結果を返すときに「null」をゼロにする方法はありますか?(phpでnullを修正できますが、可能かどうかを確認したかったのです)