![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 8 Dołączył: 11.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
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? :] Ten post edytował Lwik 14.11.2013, 19:35:29 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 8 Dołączył: 11.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
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? Ten post edytował Lwik 15.11.2013, 21:16:24 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 08:48 |