Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MySQL - wyciąganie najnowszego rekordu z podrzędnej w jeden-do-wielu
Forum PHP.pl > Forum > Bazy danych
erix
Mam takie zapytanie:
  1. SELECT *
  2. FROM items LEFT JOIN files ON ( files.item = items.id AND files.`date` = (
  3. SELECT max( `date` )
  4. FROM files WHERE files.item = items.id ) )

Ma ono na celu pobrać wszystkie rekordy z tabeli items z odpowiadającymi im najnowszymi wpisami w files.

Czy da się tego potworka napisać bez podzapytań? Kombinowałem z group by, ale nie wiem, jak go zmusić, aby wyciągał jako ostatni rekord z najnowszą datą (zawsze wypluwa pierwszy z podrzędnych).
wookieb
Bez podzapytań raczej nie da rady.
Ja czasem stosuje rozwiazanie ze do tabeli nadrzednej dodaje kolumne w ktorej umieszczam id ostatniej elementu podrzednego. Max szybkość przy niewielkim nakładzie pracy w php.

Jedyna co udało mi się uzyskać to coś takiego

  1. SELECT * FROM ( SELECT a.*, b.* FROM FIELDS a LEFT JOIN items b ON (b.id=a.item)
  2. GROUP BY a.id, b.date DESC ) c
  3. GROUP BY c.id
erix
Cytat
Ja czasem stosuje rozwiazanie ze do tabeli nadrzednej dodaje kolumne w ktorej umieszczam id ostatniej elementu podrzednego.

O, i to jest myśl. ;]
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.