Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapytanie z SUM i sortowaniem
user2
post
Post #1





Grupa: Zarejestrowani
Postów: 41
Pomógł: 3
Dołączył: 26.01.2005

Ostrzeżenie: (0%)
-----


Witam!
Nie mam pewności czy wybrałem dobry dział, więc jeżeli nie to przepraszam.

W każdym razie mam takie zapytanie do bazy:

  1. SELECT numer,nazwa,miasto,DATA, SUM(kwota) FROM test GROUP BY numer

Mam też bazę, która wygląda mniej więcej tak:

numer nazwa miasto data kwota
1234 Polekpol Kraków 2007-10-20 100
1234 Polekpol Warszawa 2007-11-01 32
4536 Łączpol Gdańsk 2007-10-24 15
4536 Łączpol Gdańsk 2007-10-26 98

I teraz jak wyświetlam wyniki poprzez:

  1. <?php
  2. $result = mysql_query($query2) or die(mysql_error());
  3.  
  4. while($row = mysql_fetch_array($result)){
  5.  
  6. //printy itp.
  7.  
  8. }
  9. ?>


Wynik wygląda tak:

1234 Polekpol Kraków 2007-10-20 132
4536 Łączpol Gdańsk 2007-10-24 113

Z Łączpolem nie ma problemu, ale jak wyświetla Polekpol to wyświetla mi dane z tego starszego rekordu (czyli zwraca miasto Kraków, mimo że w drugim już jest Warszawa).
Wie ktoś jak zrobić (posortować?) dane, żeby wyświetlał Warszawa? Próbowałem to sortować jakoś po dacie, ale nie działa. Może jest jakaś funkcja, która "mówi": "patrz na ostatni rekord"?

Z góry dzięki za szybką odpowiedź (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Pozdrawiam

Ten post edytował user2 6.11.2007, 22:24:02
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
najtje
post
Post #2





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 4.10.2007

Ostrzeżenie: (0%)
-----


Może tak się da:
  1. SELECT * FROM (SELECT numer, sum(kwota) FROM test GROUP BY numer) AS q1 NATURAL JOIN (SELECT numer ,nazwa, miasto,DATA FROM test GROUP BY numer HAVING DATA=max(DATA)) AS q2;
Go to the top of the page
+Quote Post
user2
post
Post #3





Grupa: Zarejestrowani
Postów: 41
Pomógł: 3
Dołączył: 26.01.2005

Ostrzeżenie: (0%)
-----


Niestety to nie działa (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Może istnieje coś odwrotnego do DISTINCT - czyli zaciąga jeden wiersz, ale z "dołu" a nie z góry? Albo jak zrobić zapytanie w zapytaniu, żeby działało na zasadzie:
  1. SELECT * FROM ( SELECT numer, nazwa, DATA, kwota FROM test ORDER BY DATA DESC)


Czyli, żeby "przerzedzić" wyniki, posortować je i dopiero później sumować itd.
Z tym tylko, że powyższe zapytanie nie działa.

EDIT
Obszedłem problem. Niestety nie jest to najbardziej profesjonalne rozwiązanie, ale działa. Zrobiłem drugie zapytanie, które wyciąga wszystkie świeże dane za pomocą
  1. SELECT * FROM test WHERE numer = 'jakistamnumer' ORDER BY DATA DESC LIMIT 1

I Dane z tego zapytania + SUM(kwota) z drugiego wyświetlam.

Może to się komuś przyda (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował user2 9.11.2007, 18:47:03
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 22:03