Как включить значения NULL в запрос с помощью Outer Join и Group By

У меня есть две таблицы со следующими примерами данных:

Table 1: `item_name`
| item_id | item_desc |
| 1       | apple     |
| 2       | orange    |
| 3       | banana    |
| 4       | grape     |
| 5       | mango     |

Table 2: `user_items`
| user_id | item_id |
| 127     | 1       |
| 127     | 2       |
| 127     | 4       |
| 128     | 1       |
| 128     | 5       |

Я пытаюсь выбрать общее количество каждого item_id, которое есть у обоих user_id 127 и 128, вместе с соответствующим item_desc, используя следующий запрос:

SELECT IFNULL(COUNT(ui.user_id), 0) AS total, in.item_desc 
FROM user_items AS ui 
RIGHT OUTER JOIN item_name AS in 
    ON ui.item_id = in.item_id 
WHERE ui.user_id IN (127, 128) 
GROUP BY ui.item_id
ORDER BY total DESC

Результатом вышеупомянутого запроса является:

| total | item_desc |
| 2     | apple     |
| 1     | orange    |
| 1     | grape     |
| 1     | mango     |

, но он не включает item_id 3, banana, который я хотел получить с помощью RIGHT OUTER JOIN. Я надеялся получить следующий результат:

| total | item_desc |
| 2     | apple     |
| 1     | orange    |
| 1     | grape     |
| 1     | mango     |
| 0     | banana    |

Есть ли способ изменить запрос, чтобы получить желаемый результат, указанный выше? Спасибо за уделенное время.

5
задан Lieven Keersmaekers 29 December 2011 в 00:40
поделиться