mam problem nie tyle ze stworzenie pewnego zapytania ale ze zrozumieniem dlaczego zwraca rozne wyniki
w zaleznosci od rodzaju ustawionego sortowania w podzapytaniu

mam zapytanie ktore z

  1. SELECT date, a.id_article, max(sum) FROM (SELECT date, id_article, sum(visits) AS sum
  2. FROM `a_stats_articlevisits` WHERE date<='2007-11-18 23:59:59' AND date>='2007-11-11 00:00:00'
  3. GROUP BY id_article, date
  4. ORDER BY sum DESC, date DESC ) a
  5. GROUP BY date


to zapytanie zwraca dokładnie inne wyniki niż

  1. SELECT date, a.id_article, max(sum) FROM (SELECT date, id_article, sum(visits) AS sum
  2. FROM `a_stats_articlevisits` WHERE date<='2007-11-18 23:59:59' AND date>='2007-11-11 00:00:00'
  3. GROUP BY id_article, date
  4. ) a
  5. GROUP BY date


czyli bez ORDER w podzapytaniu.

nie rozumiem dlaczego, skoro glowne zapytanie ma pobrac wiersze, gdzie kolumna sum ma awrtosci najwieksze.
nie rozumiem, co ma do tego sorotwanie w podzapytaniu.

hmm. nie wiem


moze inaczej - mam takie dane:


  1. id id_article date visits
  2. 458 456 2007-11-16 7
  3. 964 1 2007-11-16 5
  4. 1798 1428 2007-11-16 1
  5. 2441 1 2007-11-17 4
  6. 2499 456 2007-11-17 2
  7. 4734 1 2007-11-18 1
  8. 4761 456 2007-11-18 1
  9. 5551 1428 2007-11-18 1


chce z tej tabeli wyciagnac wiersze, ktore przedstawiaja najwieksze ilosc w visit w ramach danego dnia.
jezeli są 2 wiersze to moze byc 1 - dowolny z nich.

czyli wynik przedstawialby sie tak:

  1. id id_article date visits
  2. 458 456 2007-11-16 7
  3. 2441 1 2007-11-17 4
  4. 4761 456 2007-11-18 1


lub


  1. id id_article date visits
  2. 458 456 2007-11-16 7
  3. 2441 1 2007-11-17 4
  4. 5551 1428 2007-11-18 1


siedze nad tym, a wiem ze to banal, bo pare lat temu siedzialem mocno w sql i potrafilem to zrobic, potem mialem kilk alat przerwy i jakos nie moge sobie przypomniec jak

ok. zrobilem, tylko wlasnie nie wiem czemu musi byc order w podzapytaniu. bez tego mam jakies dziwne wyniki

  1. SELECT date, id_article, max(visits)
  2. FROM ( SELECT *
  3. FROM articlevisits ORDER BY date ASC,visits DESC ) a
  4. GROUP BY date