İki MySQL tablolar - bir satış tablosu:bir katılmak
+----------------+------------------------------+------+-----+---------+-------+
| 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 | |
+----------------+------------------------------+------+-----+---------+-------+
ve ürün tablosu: Satış tabloda her ItemID için birden fazla kayıt içeren
+--------------------+------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+------------------------------+------+-----+---------+-------+
| ItemId | bigint(20) unsigned | NO | PRI | NULL | |
| ItemName | varchar(100) | NO | | NULL | |
+--------------------+------------------------------+------+-----+---------+-------+
- Her bir SaleWeek için bir tane. Öyle gibi iki tablo birleştirme tarafından satılan tüm öğeleri seçmek istiyorum:
SELECT items.ItemName, items.ItemId FROM items
JOIN sales ON items.ItemId = sales.ItemId
WHERE sales.StoreID = ? ORDER BY sales.SaleWeek DESC;
Ancak bu her SaleWeek için birden girdileri dayalı birden ItemId değerlerini dönüyor. Sadece bir tanesini ItemID dönmek için ayrı bir seçme yapabilir - Bazı öğeler son SaleWeek için bir giriş olmayabilir çünkü son SaleWeek sorgulamak zorunda kalmak istemiyoruz yüzden son almak gerekir satış. DISTINCT belirtmem mi veya SOL DIŞI JOIN veya başka bir şey mi kullanmalıyım?
DISTINCT'i denediniz mi? Kullanmakta olduğunuz DBMS'ye bağlı olarak siparişinizi mahvedebilir ... –