Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapytanie z MAX + łączenie 2 tabel
-lukasamd-
post
Post #1





Goście







Witam,
mam na forum (phorum) tabelę z wiadomościami z której pobieram

- message_id
- datestamp
- forum_id
- subject
- thread
- user_id
- author
- thread_count

Chyba zawartości nie muszę tłumaczyć, po nazwach da się rozpoznać (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Aby pobrać najnowsze posty daję zapytanie:

  1. 'SELECT MAX(message_id) as message_id, forum_id, subject, thread, MAX(user_id) as user_id, author, thread_count, MAX(datestamp) as datestamp
  2. FROM phorum_messages GROUP BY thread
  3. ORDER BY message_id DESC'


Tak skonstruowane pobiera mi najwyższe massage_id, user_id oraz datestamp z danego wątku. Wszystko wydaje się być ok... ale jednak nie jest :/ Author jest zawsze wybierany ten sam - autor tematu zamiast autora ostatniego postu. Próbowałem "podpiąć się" pod drugą tabelę z użytkownikami z której pobierałbym wartość "username":

  1. 'SELECT MAX(message_id) as message_id, forum_id, subject, thread, MAX(phorum_messages.user_id) as user_id, username, thread_count, MAX(datestamp) as datestamp
  2. FROM phorum_messages, phorum_users
  3. GROUP BY thread
  4. ORDER BY message_id DESC'


Działa "prawie" jak należy - w pierwszym wypadku wybrało odpowiedniego usera, niestety w każdym następnym się on powtarza (choć wcale nie jest autorem ostatniego posta w innych topicach).

Może ktoś pomóc? Już mnie po prostu trafia - jakby nie mogli w tym skrypcie dać tabeli topics jak w każdym innym cywilizowanym... (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif)

Ten post edytował lukasamd 27.07.2008, 09:30:15
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
osiris
post
Post #2





Grupa: Zarejestrowani
Postów: 121
Pomógł: 15
Dołączył: 19.07.2007

Ostrzeżenie: (0%)
-----


Rozwiazanie z uzyciem zapytania skolerowanego:
  1. SELECT *
  2. FROM phorum_messages p1
  3. WHERE p1.datestamp = (SELECT MAX(p2.datestamp) FROM phorum_messages p2 WHERE p2.thread = p1.thread)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 23:41