我被困在SQL查詢中,我希望你們能幫助我。使用COUNT執行2個表的INNER JOIN()
我有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 |
+----------+-------+--------+
我在做什麼錯?有沒有辦法只使用一個查詢,並得到:
+----------+-------+--------+
| event_id | name | booked |
+----------+-------+--------+
| 1 | Test1 | 0 |
+----------+-------+--------+
| 2 | Test2 | 0 |
+----------+-------+--------+
| 3 | Test3 | 0 |
+----------+-------+--------+
請幫忙。
UPDATE: 當我運行:
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 |
+----------+-------+--------+
感謝您的幫助。兩個答案都是正確的,但你是第一個:) – n1te 2013-03-03 07:28:15