Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Ograniczenie na left JOIN
tabbi
post
Post #1





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 30.10.2010

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


Układ bazy jest jak: https://github.com/jrmadsen67/Mahana-Messag...ster/mahana.sql

Zapytanie:

  1. $sql = 'SELECT m.*, s.status, t.subject, '.USER_TABLE_USERNAME .
  2. ' FROM msg_participants p ' .
  3. ' JOIN msg_threads t ON (t.id = p.thread_id) ' .
  4. ' JOIN msg_messages m ON (m.thread_id = t.id) ' .
  5. ' JOIN ' .USER_TABLE_TABLENAME. ' ON ('.USER_TABLE_ID.' = m.sender_id) '.
  6. ' JOIN msg_status s ON (s.message_id = m.id AND s.user_id = ? ) ' .
  7. ' WHERE p.user_id = ? ' ;
  8. if (!$full_thread)
  9. {
  10. $sql .= ' AND m.cdate >= p.cdate';
  11. }
  12. $sql .= ' ORDER BY t.id '.$order_by. ', m.cdate '.$order_by;


Co chce zrobić to pobrać jedynie ostatnie wiadomości z danego wątku.

Więc zastępuje msg_messages dodatkowym selectem ale to nie działa !

  1. JOIN msg_messages m ON ( (SELECT b.thread_id FROM msg_messages AS b ORDER BY b.id DESC LIMIT 1) = t.id)' .
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


JOIN (SELECT id, Max(thread_id) As thread_id FROM msg_messages) x ON t.id=x.id and x.thread_id=t.thread_id
Go to the top of the page
+Quote Post
tabbi
post
Post #3





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 30.10.2010

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


  1. JOIN (SELECT id, Max(thread_id) AS thread_id FROM msg_messages) x ON t.id=x.id AND x.thread_id=t.thread_id
  2. [SQL]
  3.  
  4. Poprawnie
  5. [sql]
  6. JOIN (SELECT id, Max(thread_id) AS thread_id FROM msg_messages) x ON x.thread_id=t.id


I niestety nie zwraca poprawnego wyniku. Są 3 wątki a dostaje tylko ostatnią wiadomość z 1 wątku. A docelowo powinnienem dostać 3 wątki i 3 ostatnie wiadomości pojedyńczo nich przypisane.
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #4





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Zapomniałem o grupowaniu...
  1. JOIN (SELECT id, Max(thread_id) AS thread_id FROM msg_messages GROUP BY 1) x ON x.thread_id=t.id
Go to the top of the page
+Quote Post

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: 27.12.2025 - 04:16