Tôi có hai bảng với dữ liệu mẫu sau:Làm thế nào để bao gồm các giá trị NULL trong một truy vấn với Outer Join Tập đoàn 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 |
Tôi đang cố gắng để lựa chọn một tổng số của mỗi item_id cả user_id 127 và 128 có, cùng với tương ứng ITEM_DESC bằng cách sử dụng truy vấn sau đây:
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
kết quả của các truy vấn trên là:
| total | item_desc |
| 2 | apple |
| 1 | orange |
| 1 | grape |
| 1 | mango |
nhưng nó không bao gồm item_id 3, chuối, mà tôi muốn lấy với RIGHT OUTER JOIN. Tôi đã hy vọng nhận được kết quả như sau:
| total | item_desc |
| 2 | apple |
| 1 | orange |
| 1 | grape |
| 1 | mango |
| 0 | banana |
Có cách nào để sửa đổi truy vấn để kết thúc với kết quả dự định ở trên không? Cảm ơn bạn đã dành thời gian.
+1. Hãy cẩn thận tại IN bí danh;) –
Ah cảm ơn bạn rất nhiều, Lieven! Và cảm ơn nick, bí danh mẫu của tôi thật tệ, cảm ơn vì đã chỉ ra điều đó! – Tom