Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: LEFT JOIN z limitem
Forum PHP.pl > Forum > Bazy danych
Hosiek
Mam dwie kolumny, tematy oraz posty. Teraz chce wyczytać wszystkie tematy oraz ostatnie ich posty jednak mam mały problem
Zapytaniem
  1. SELECT * FROM `topics` AS t LEFT JOIN `posts` AS p ON t.topic_id = p.topic_id

Osiągnę taki efekt że identycznych tematów mam tyle, ile ich postów a chcę mieć tylko jeden temat oraz jeden post w jednym zapytaniu.
Da się jakoś dodać limit tylko do postów albo osiągnąć to w jakiś inny sposób?

//Rozwiązałem to w taki sposób, może ktoś znajdzie coś lepszego smile.gif
Kod
SELECT t.*, (SELECT CONCAT(p.post_user,'-', p.post_date) FROM `posts` AS p WHERE p.topic_id = t.topic_id LIMIT 1) AS last_post FROM `topics` AS t WHERE t.board_id = {$board_id}
mmmmmmm
Tylko jedna kolumna z tabeli posty? Jeśli tak, to zapytanie skorelowane. Jeśli nie, to podzapytanie (SELECT topic_id, Max(post_id) FROM posty) i do tego podłączyć dwie tabele - topici i posty.
Hosiek
Cytat(mmmmmmm @ 1.10.2014, 15:19:41 ) *
Tylko jedna kolumna z tabeli posty? Jeśli tak, to zapytanie skorelowane. Jeśli nie, to podzapytanie (SELECT topic_id, Max(post_id) FROM posty) i do tego podłączyć dwie tabele - topici i posty.

Dwie tabele potrzebuje ale zrobiłem concat i potem rozdzieliłem w php, lecz brakuje mi jeszcze orderu więc chyba faktycznie zrobię jak mówisz, dzięki wielkie.
phpion
Ja bym proponował nagiąć trochę zasady i do tabeli topiców dodać ID ostatniego postu. Wartość najlepiej aktualizować triggerem żeby mieć pewność, że zawsze jest tam prawidłowa wartość.
Hosiek
Można i tak.
mmmmmmm
Oczywiście moje zapytanie jest błędne, bo to tylko schemat... Brakuje GROUP BY. smile.gif
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.