Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> select z group by i max()
wojtekr
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 15.10.2003

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


Witam, mam problem z zapytaniem:
  1. SELECT max(data_change), firma.nazwa, new_ryczalt,
  2. FROM zmiana_ryczaltu,firma WHERE zmiana_ryczaltu.id_firma=firma.id_firma
  3. GROUP BY zmiana_ryczaltu.id_firma ORDER BY id_zmiana_ryczalt

W tym zapytaniu chodzi mi o wybranie takich rekordów, w których wartość new_ryczalt pochodzi z rekordu , w któym data_change jest maksymalna i id_firma jest taka sama.
Tak wykonane zapytanie zwraca max-data i new ryczalt ale sa to dane z dwu różnych rekordów
wojtekr
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




A może:
  1. SELECT max(data_change), firma.nazwa, new_ryczalt,
  2. FROM zmiana_ryczaltu,firma WHERE zmiana_ryczaltu.id_firma=firma.id_firma AND data_change=max(data_change)
  3. GROUP BY zmiana_ryczaltu.id_firma ORDER BY id_zmiana_ryczalt
Go to the top of the page
+Quote Post
popbart
post
Post #3





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 22.04.2004
Skąd: Żoliborz

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


@nospor ,a może tak sprawdzaj swoje teorie na localu (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

@wojtekr podaj strukturę tabel a coś poradzimy
Go to the top of the page
+Quote Post
wojtekr
post
Post #4





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 15.10.2003

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


problem dotyczy tabel: firma i zmiana_ryczaltu.
firma: id_firma, nazwa
zmiana_ryczaltu: id_zmiana_ryczaltu, id_firma, old_ryczalt, new_ryczalt, data_change

Jak pisałem wyżej: jeżeli zrobię max(data_change) to zwraca mi max data ale nie zwraca pasujacy _ryczalt.

Natomiast
  1. WHERE zmiana_ryczaltu.id_firma=firma.id_firma AND data_change=max(data_change)

zwraca:
Invalid use of group function
Go to the top of the page
+Quote Post
popbart
post
Post #5





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 22.04.2004
Skąd: Żoliborz

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


Jeżeli mysql 4.1.x to :
  1. SELECT *
  2. FROM zmiana_ryczaltu WHERE concat_ws(id_firma,data_change,'|')
  3. IN(SELECT concat_ws(id_firma,max(data_change),'|')
  4. FROM zmiana_ryczaltu GROUP BY id_firma)

Sprawdzałem i działa (IMG:http://forum.php.pl/style_emoticons/default/cool.gif) .
Jeżeli ma ktoś lepszy pomysł, to sam jestem ciekaw (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
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: 10.10.2025 - 13:13