У меня есть следующие таблицы:
Locations
+-------------+----------------+
| Location_ID | Location_Name |
+-------------+----------------+
| 1 | Administration |
| 2 | Parking |
| 3 | Warehouse |
| 4 | Shipping |
| 5 | Factory |
| 6 | Office |
| 7 | Processing |
+-------------+----------------+
Item_Quantity
+---------+-------------+-------------------+
| Item_ID | Location_ID | Location_Quantity |
+---------+-------------+-------------------+
| 1 | 3 | 10 |
| 1 | 5 | 50 |
| 2 | 3 | 7 |
+---------+-------------+-------------------+
Я пытаюсь получить список всех Location_IDs и Location_Names с Location_Quantity для указанного Item_ID.
Ожидаемый результат для Item_ID = 1 будет следующим:
+-------------+----------------+-------------------+
| Location_ID | Location_Name | Location_Quantity |
+-------------+----------------+-------------------+
| 1 | Administration | 0 |
| 2 | Parking | 0 |
| 3 | Warehouse | 10 |
| 4 | Shipping | 0 |
| 5 | Factory | 50 |
| 6 | Office | 0 |
| 7 | Processing | 0 |
+-------------+----------------+-------------------+
Ожидаемый результат для Item_ID = 2 будет следующим:
+-------------+----------------+-------------------+
| Location_ID | Location_Name | Location_Quantity |
+-------------+----------------+-------------------+
| 1 | Administration | 0 |
| 2 | Parking | 0 |
| 3 | Warehouse | 7 |
| 4 | Shipping | 0 |
| 5 | Factory | 0 |
| 6 | Office | 0 |
| 7 | Processing | 0 |
+-------------+----------------+-------------------+
Я пробовалследующие запросы:
SELECT l.Location_ID, l.Location_Name, iq.Location_Quantity
FROM Locations l
LEFT JOIN Item_Quantity iq ON l.Location_ID = iq.Location_ID
WHERE iq.Item_ID = @Item_ID
SELECT l.Location_ID, l.Location_Name, iq.Location_Quantity
FROM Item_Quantity iq
LEFT JOIN Locations l ON l.Location_ID = iq.Location_ID
WHERE iq.Item_ID = @Item_ID
SELECT l.Location_ID, l.Location_Name, Location_Quantity = iif(iq.Location_Quantity IS NOT NULL, iq.Location_Quantity, 0)
FROM Locations l
LEFT JOIN Item_Quantity iq ON l.Location_ID = iq.Location_ID
WHERE iq.Item_ID = @Item_ID
Все запросы возвращают только строки с записями в Item_Quantity.
Это то, что я получаю для Item_ID = 1 для любого из вышеуказанных запросов:
+-------------+----------------+-------------------+
| Location_ID | Location_Name | Location_Quantity |
+-------------+----------------+-------------------+
| 3 | Warehouse | 10 |
| 5 | Factory | 50 |
+-------------+----------------+-------------------+
Я бы подумал, что левое соединение в таблице Locations даст мне все строки из указанных столбцов, но я должен что-то неправильно понять?
Может кто-нибудь увидеть, что я делаю неправильноздесь