У меня есть таблица всех продаж определяется как:SQL запрос, чтобы получить последнюю запись для всех различных элементов в таблице
mysql> describe saledata;
+-------------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+---------------------+------+-----+---------+-------+
| SaleDate | datetime | NO | | NULL | |
| StoreID | bigint(20) unsigned | NO | | NULL | |
| Quantity | int(10) unsigned | NO | | NULL | |
| Price | decimal(19,4) | NO | | NULL | |
| ItemID | bigint(20) unsigned | NO | | NULL | |
+-------------------+---------------------+------+-----+---------+-------+
Мне нужно, чтобы получить последнюю цену продажи для всех элементов (как цена может измениться). Я знаю, что могу выполнить запрос, например:
SELECT price FROM saledata WHERE itemID = 1234 AND storeID = 111 ORDER BY saledate DESC LIMIT 1
Однако, я хочу, чтобы иметь возможность получить последнюю отпускную цену для всех элементов (в ItemID
s хранятся в отдельной таблице элементов) и вставить их в отдельный Таблица. Как я могу получить эти данные? Я пробовал запросы как это:
SELECT storeID, itemID, price FROM saledata WHERE itemID IN (SELECT itemID from itemmap) ORDER BY saledate DESC LIMIT 1
, а затем обернуть это в вставку, но не получает правильные данные. Есть один вопрос, я могу работать, чтобы получить последнюю цену для каждого элемента и вставить, что в таблице определяется как:
mysql> describe lastsale;
+-------------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+---------------------+------+-----+---------+-------+
| StoreID | bigint(20) unsigned | NO | | NULL | |
| Price | decimal(19,4) | NO | | NULL | |
| ItemID | bigint(20) unsigned | NO | | NULL | |
+-------------------+---------------------+------+-----+---------+-------+
С помощью stackoverflow своевременно найдено – sansknwoledge