У меня две таблицы mysql - таблица продаж:
+----------------+------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+------------------------------+------+-----+---------+-------+
| StoreId | bigint(20) unsigned | NO | PRI | NULL | |
| ItemId | bigint(20) unsigned | NO | | NULL | |
| SaleWeek | int(10) unsigned | NO | PRI | NULL | |
+----------------+------------------------------+------+-----+---------+-------+
и таблица элементов:
+--------------------+------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+------------------------------+------+-----+---------+-------+
| ItemId | bigint(20) unsigned | NO | PRI | NULL | |
| ItemName | varchar(100) | NO | | NULL | |
+--------------------+------------------------------+------+-----+---------+-------+
Таблица продаж содержит несколько записей для каждого ItemID - по одному для каждого SaleWeek. Я хочу выбрать все проданные товары, соединяя две таблицы так:
SELECT items.ItemName, items.ItemId FROM items
JOIN sales ON items.ItemId = sales.ItemId
WHERE sales.StoreID = ? ORDER BY sales.SaleWeek DESC;
Однако это возвращает несколько значений ItemId на основе нескольких записей для каждого SaleWeek. Могу ли я сделать отдельный выбор, чтобы возвращать только один ItemID. Я не хочу запрашивать последние SaleWeek, потому что у некоторых элементов может не быть записи для последних SaleWeek, поэтому мне нужно получить последнюю продажу. Нужно ли указывать DISTINCT или использовать LEFT OUTER JOIN или что-то еще?