SORU
4 Mart 2009, ÇARŞAMBA


Nasıl MAX(Sütun değeri), SQL başka bir sütuna göre FARKLI olan satırları SEÇİN miyim?

Benim tablo

id  home  datetime     player   resource
---|-----|------------|--------|---------
1  | 10  | 04/03/2009 | john   | 399 
2  | 11  | 04/03/2009 | juliet | 244
5  | 12  | 04/03/2009 | borat  | 555
3  | 10  | 03/03/2009 | john   | 300
4  | 11  | 03/03/2009 | juliet | 200
6  | 12  | 03/03/2009 | borat  | 500
7  | 13  | 24/12/2008 | borat  | 600
8  | 13  | 01/01/2009 | borat  | 700

Her biri farklı home datetime maksimum değer tutma seçmek için ihtiyacım var.

Sonuç şöyle olacaktır:

id  home  datetime     player   resource 
---|-----|------------|--------|---------
1  | 10  | 04/03/2009 | john   | 399
2  | 11  | 04/03/2009 | juliet | 244
5  | 12  | 04/03/2009 | borat  | 555
8  | 13  | 01/01/2009 | borat  | 700

Denedim:

-- 1 ..by the MySQL manual: 

SELECT DISTINCT home, id, datetime as dt, player, resource
    FROM topten t1
    WHERE datetime = (SELECT MAX(t2.datetime) FROM topten t2
        GROUP BY home )
GROUP BY datetime
ORDER BY datetime DESC

İşe yaramıyor. Sonuç küme veritabanı 187 elinde tutmasına karşın 130 satır var. Sonuç home bazı çiftleri içerir.

-- 2 ..join

SELECT s1.id, s1.home, s1.datetime, s1.player, s1.resource
FROM topten s1 JOIN
(SELECT id, MAX(datetime) AS dt
  FROM topten
  GROUP BY id) AS s2
  ON s1.id = s2.id
  ORDER BY datetime 

Hayır. Tüm kayıtları verir.

-- 3 ..something exotic: 

Çeşitli sonuçlar.

CEVAP
4 Mart 2009, ÇARŞAMBA


Çok yaklaştın! Yapmanız gereken tüm giriş ve max tarih zaman her ikisini DE seçin, topten tabloya katılmak her İKİ alanda sonra

SELECT tt.*
FROM topten tt
INNER JOIN
    (SELECT home, MAX(datetime) AS MaxDateTime
    FROM topten
    GROUP BY home) groupedtt 
ON tt.home = groupedtt.home 
AND tt.datetime = groupedtt.MaxDateTime

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bokeh

    Bokeh

    9 HAZİRAN 2014
  • ColdfusTion

    ColdfusTion

    3 Aralık 2007
  • Just So

    Just So

    3 HAZİRAN 2007