Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] 1 rekord w JOIN?
Forum PHP.pl > Forum > Przedszkole
Lwik
Hej, od pół godziny zmagam się z głupim problemem logicznym w zapytaniu mysql, a mianowicie:
mam trzy tabele:

conversation
id | topic | from_id | to_id | time
1 | Temat | 1 | 2 | time()

conversation_msg
id | conv_id | author_id | time | text
1 | 1 | 2 | time()| wiadomo
1 | 1 | 1 | time()| wiadomo

users
id | nick
1 | nick
2 | nick

Chciałbym wyjąć dane z mysql
a] conversation.id, conversation.from_id, conversation.to_id, conversation.time
b] from_id, to_id łącząc z tabelą users przez join (pobierając dwa nicki)
c] conversation.id łącząc z tabelą conversation_msg pobierając OSTATNI conversation_msg.text
a i b jest bez problemu - czyli złączenie join, z trzecim próbowałem joinem - zwraca jednak kilka rezultatów bądź nieułożonych w odpowiedniej kolejności.
Domyślam się, że rozwiązanie jest banalne, więc jakieś pomysły? :]
mmmmmmm
Jeśli to tylko jedno pole, to lepiej w SELECT dodać: ... (SELECT conversation_msg.text FROM conversation_msg WHERE id=conversation.id /* to tabela z "zewnątrz" */ ORDER BY data DESC LIMIT 1)
I tak zarzyna serwer. Pewnie tak samo jak JOIN z dwoma podzapytaniami.
Lwik
Nie pomyślałem o tym od kwestii optymalizacji, fakt, takie zapytanie często wywoływane może trochę obciążać system.
Wrzuciłem aktualizację ostatniej wiadomości w skróconej formie do "conversation", bo już chyba lepiej poświęcić te kilka kb dla varchar z tekstem?
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.