私は SQL クエリに行き詰まっています。皆さんが私を助けてくれることを願っています。
私は2つのテーブルを持っています:
EVENTS
event_id (PK)
event_name
ORDERS
order_id (PK)
event_id (FK)
そして、これらのテーブルに対して次のクエリを実行しようとしています:
SELECT
e.event_id,
e.name,
COUNT(o.event_id) AS booked
FROM
events AS e
INNER JOIN
orders AS o
ON
e.event_id = o.event_id
WHERE
e.event_id IN (1, 2, 3)
問題は、私が得ている結果が次のとおりであることです。
+----------+------+--------+
| event_id | name | booked |
+----------+------+--------+
| NULL | NULL | 0 |
+----------+------+--------+
しかし、次のように 3 つの個別のクエリを実行すると:
WHERE e.event_id IN (1)
WHERE e.event_id IN (2)
WHERE e.event_id IN (3)
私が望む結果が得られます:
+----------+-------+--------+
| event_id | name | booked |
+----------+-------+--------+
| 1 | Test1 | 0 |
+----------+-------+--------+
+----------+-------+--------+
| event_id | name | booked |
+----------+-------+--------+
| 2 | Test2 | 0 |
+----------+-------+--------+
+----------+-------+--------+
| event_id | name | booked |
+----------+-------+--------+
| 3 | Test3 | 0 |
+----------+-------+--------+
私は何を間違っていますか?クエリを 1 つだけ使用して取得する方法はありますか。
+----------+-------+--------+
| event_id | name | booked |
+----------+-------+--------+
| 1 | Test1 | 0 |
+----------+-------+--------+
| 2 | Test2 | 0 |
+----------+-------+--------+
| 3 | Test3 | 0 |
+----------+-------+--------+
助けてください。
更新:実行すると:
SELECT
e.event_id,
e.name,
COUNT(o.event_id) AS booked
FROM
events AS e
LEFT JOIN
orders AS o
ON
e.event_id = o.event_id
WHERE
e.event_id IN (1, 2, 3)
私だけが得ます:
+----------+-------+--------+
| event_id | name | booked |
+----------+-------+--------+
| 1 | Test1 | 0 |
+----------+-------+--------+