J'ai une table de toutes les ventes sont définies comme:requête SQL pour obtenir le dernier enregistrement pour tous les articles distincts dans une table
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 | |
+-------------------+---------------------+------+-----+---------+-------+
Je dois obtenir le dernier prix de vente pour tous les articles (comme le prix peut changer). Je sais que je peux exécuter une requête comme:
SELECT price FROM saledata WHERE itemID = 1234 AND storeID = 111 ORDER BY saledate DESC LIMIT 1
Cependant, je veux être en mesure d'obtenir le dernier prix de vente pour tous les articles (les ItemID
s sont stockés dans une table d'éléments séparés) et les insérer dans un séparée table. Comment puis-je obtenir ces données? J'ai essayé des requêtes comme ceci:
SELECT storeID, itemID, price FROM saledata WHERE itemID IN (SELECT itemID from itemmap) ORDER BY saledate DESC LIMIT 1
puis WRAP dans un insert, mais ce n'est pas obtenir les données appropriées. Y at-il une question que je peux courir pour obtenir le dernier prix pour chaque article et insérer cela dans une table définie comme:
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 | |
+-------------------+---------------------+------+-----+---------+-------+
Merci à Stackoverflow, en temps opportun trouvé – sansknwoledge