Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MAX()
Forum PHP.pl > Forum > Bazy danych > MySQL
kicaj
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
Vertical
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
popbart
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
kicaj
@popbart: działa poprawnie, ale jednego nie moge zrozumiec. Co tu robic ...WHERE p2.post_add IS NULL?
crash
Rozpędził się chyba, to jest niepotrzebne of course.
popbart
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 ?
crash
Właśnie teraz tak patrze i próbuję dostrzec jakiejś logiki w tym... Nie powinno być przypadkiem IS NOT NULL?
popbart
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.