Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL Wybierz DOŁĄCZ 3 stoły

Będziesz potrzebować dwóch sprzężeń. Coś takiego jak poniżej powinno Cię zacząć (chociaż nie rozumiem w 100% związku między pm_data i pm_info ):

SELECT pm_info.is_read, sender.usrFirst + ' ' + sender.usrLast as sender_name, 
    pm_data.date_sent, pm_data.title, pm_data.thread_id
FROM pm_info
INNER JOIN pm_data ON pm_info.thread_id = pm_data.thread_id
INNER JOIN tblUsers AS sender ON pm_data.sender_id = tblUsers.usrID
WHERE pm_info.receiver_id = @USER_ID /*in this case, 2*/
ORDER BY pm_data.date_sent DESC

Zakładam związek między pm_data i pm_info to identyfikator wątku. Jeśli tak nie jest, powinieneś być w stanie dostosować powyższe do tego, czego potrzebujesz. Posortowałem również według daty wysłania tutaj, ale nie utrzyma to wątków razem . Nie jestem pewien, czy chcesz je trzymać razem, czy nie, biorąc pod uwagę sposób, w jaki sformułowałeś swoje pytanie.

Jeśli chcesz trzymać wątki razem , będziesz potrzebować bardziej skomplikowanego zapytania:

SELECT pm_info.is_read, sender.usrFirst + ' ' + sender.usrLast as sender_name, 
    pm_data.date_sent, pm_data.title, pm_data.thread_id
FROM pm_info
INNER JOIN pm_data ON pm_info.thread_id = pm_data.thread_id
INNER JOIN tblUsers AS sender ON pm_data.sender_id = tblUsers.usrID
INNER JOIN (SELECT thread_id, MAX(date_sent) AS max_date
            FROM pm_data
            GROUP BY thread_id) AS most_recent_date 
           ON pm_data.thread_id = most_recent_date.thread_id
WHERE pm_info.receiver_id = @USER_ID /*in this case, 2*/
ORDER BY most_recent_date.max_date DESC, pm_data.thread_id, 
    pm_data.date_sent DESC

To zapytanie używa podwyboru, aby znaleźć najnowszą datę modyfikacji dla każdego wątku, a następnie sortuje według tej pierwszej.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL, jak wstawić daty null

  2. Wartość liczbowa poza zakresem:1264 w mysql

  3. Usuwanie wszystkich rekordów tabeli, do których nie ma odniesień z innej tabeli

  4. Zamów wiele kolumn ASC

  5. Jak obsługiwać starszą bazę danych we frameworku Django