Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Limit złączania tabel (INNER JOIN)
Forum PHP.pl > Forum > Przedszkole
arzach
Witam ma takie zapytanie,
  1. SELECT thread_id, thread_subject, post_message FROM (SELECT thread_id, thread_subject FROM threads ORDER BY thread_lastpost DESC LIMIT 5) t INNER JOIN posts USING(thread_id)

które zadanie pobrać 5 ostatnich tematów i do każdego tematu posty. NO i zapytanie działa, ale do każdego tematu pobiera wszystkie posty a ja chciałbym zrobić by przy złączaniu tabel złączałoby tylko po 5 rekordów do jednego tematu.

Próbowałem to zrobić tak
  1. SELECT thread_id, thread_subject, post_message FROM (SELECT thread_id, thread_subject FROM threads ORDER BY thread_lastpost DESC LIMIT 5) t INNER JOIN (SELECT thread_id, post_message FROM posts ORDER BY post_datestamp DESC LIMIT 5) USING(thread_id)


I to dołącza tylko 5 rekordów. Proszę o pomoc w wykonaniu zapytania.

Fifi209
Cytat(arzach @ 1.08.2010, 10:26:54 ) *
I to dołącza tylko 5 rekordów. Proszę o pomoc w wykonaniu zapytania.

Dziwisz się? Przecież masz tam limity 5.
arzach
Cytat(fifi209 @ 1.08.2010, 11:33:29 ) *
Dziwisz się? Przecież masz tam limity 5.


To że dołącza tylko 5 rekordów to wiem Nie wiem jak mam zrobić by dołączało po 5 do każdego tematu.
Fifi209
Nie jestem pewny ale przy JOIN'ach trzeba było używać warunku ON

a union select Ci nie wystarczy?
arzach
  1. UNION SELECT
tutaj się nie pomoże już o tym myślałem

CO do warunku ON to nie musi, bo
  1. ON(p.thread_id=t. thread_id)

Daje to samo, co
  1. USING(thread_id)
tylko z tym daje jedną kolumnę wynikową thread_id a nie dwie. ON mógłbym użyć jakbym chciał dodać jeszcze jeden warunek np.
  1. ON(p.thread_id=t. thread_id AND thread_id=1 )
a to mi niepotrzebne . Bo potrzebuje złączyć tabele by do każdego tematu złączyło 5 postów z tabeli post
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.