У меня есть две таблицы 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 или что-то еще?