Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> MAX()
kicaj
post 5.02.2005, 17:51:50
Post #1





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


Zapytanie:
  1. SELECT p1.post_title, p1.post_user_id, MAX( p1.post_add )
  2. FROM posts p1 WHERE p1.post_forum_id = 4
  3. GROUP BY p1.post_forum_id
zwraca wiersz w ktorym jest najnowsza data i czy powinno zwrocic wartosc p1.post_user_id, gdzie wlasnie jest ta najnowsza data? Bo zwraca obojetna, tzn jakiegos tam wiersza, a nie tego gdzie jest najnowsza data smile.gif

Chcialbym wyswietlic p1.post_user_id tam gdzie jest najnowsza data


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Vertical
post 5.02.2005, 18:12:30
Post #2





Grupa: Zarejestrowani
Postów: 848
Pomógł: 0
Dołączył: 7.07.2004
Skąd: Wrocław

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


Ja napisałbym coś takiego:
  1. SELECT p1.post_title, p1.post_user_id
  2. FROM posts p1 WHERE p1.post_forum_id = 4
  3. ORDER BY p1.post_add DESC LIMIT 1
  4. GROUP BY p1.post_forum_id

MAX() służy raczej do wyciągania największych wartości liczbowych, nie nadaje się do dat

Ten post edytował Vertical 5.02.2005, 18:14:25
Go to the top of the page
+Quote Post
popbart
post 7.02.2005, 16:43:29
Post #3





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

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


Cytat
Ja napisałbym coś takiego:
  1. SELECT p1.post_title, p1.post_user_id
  2.  
  3.  
  4. FROM posts p1
  5.  
  6. WHERE p1.post_forum_id = 4
  7. ORDER BY p1.post_add DESC LIMIT 1
  8. GROUP BY p1.post_forum_id

MAX() służy raczej do wyciągania największych wartości liczbowych, nie nadaje się do dat

Totalne bzdury. Spróbuj wykonać swoje zapytanie.

kicaj_ -> jeżeli chcesz wyświetlić ostatnie rekordy z każdej grupy(możesz też dodać and p1.post_forum_id = 4) to zrób tak:
  1. SELECT p1.post_title, p1.post_user_id
  2. FROM posts p1 WHERE p1.post_id IN (SELECT MAX( p1.post_id )
  3. FROM posts GROUP BY p1.post_forum_id)

Albo jeżeli nie masz MySQL 4.1.x :

  1. SELECT p1.post_title, p1.post_user_id
  2. FROM posts AS p1
  3. LEFT JOIN posts AS p2 ON ( p1.post_forum_id = p2.post_forum_id AND p1.post_id < p2.post_id )
  4. WHERE p2.post_add IS NULL


Ten post edytował popbart 7.02.2005, 16:44:53


--------------------
Visual Basic - kto by pomyślał :)
Go to the top of the page
+Quote Post
kicaj
post 9.02.2005, 18:15:01
Post #4





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


@popbart: działa poprawnie, ale jednego nie moge zrozumiec. Co tu robic ...WHERE p2.post_add IS NULL?


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
crash
post 9.02.2005, 18:36:08
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


Rozpędził się chyba, to jest niepotrzebne of course.


--------------------
Go to the top of the page
+Quote Post
popbart
post 9.02.2005, 18:44:02
Post #6





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

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


Może raczej tak: p2.post_id winksmiley.jpg
  1. SELECT p1.post_title, p1.post_user_id
  2. FROM posts AS p1
  3. LEFT JOIN posts AS p2 ON ( p1.post_forum_id = p2.post_forum_id AND p1.post_id < p2.post_id )
  4. WHERE p2.post_id IS NULL

@crashu ,dlaczego sądzisz że to jest niepotrzebne ?


--------------------
Visual Basic - kto by pomyślał :)
Go to the top of the page
+Quote Post
crash
post 9.02.2005, 19:56:11
Post #7





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


Właśnie teraz tak patrze i próbuję dostrzec jakiejś logiki w tym... Nie powinno być przypadkiem IS NOT NULL?


--------------------
Go to the top of the page
+Quote Post
popbart
post 9.02.2005, 20:22:08
Post #8





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

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


Cytat
Właśnie teraz tak patrze i próbuję dostrzec jakiejś logiki w tym... Nie powinno być przypadkiem IS NOT NULL?
Nie smile.gif
To jest taki "trick" (działający) omijający brak podzapytań w MySQL < 4.1.x nie mający nic z wspólnego z logiką winksmiley.jpg


--------------------
Visual Basic - kto by pomyślał :)
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 21:49