Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL Изберете JOIN 3 Tables

Ще ви трябват две връзки. Нещо като следното трябва да ви помогне да започнете (въпреки че не разбирам на 100% връзката между pm_data и 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

Предполагам връзката между pm_data и 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
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

Тази заявка използва подселекция, за да намери най-новата модифицирана дата за всяка нишка, след което първо сортира по нея.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите броя на всяка отделна стойност в колона?

  2. SQL - Актуализирайте множество записи в една заявка

  3. Съхранявайте изхода на mysql заявка в променлива на обвивката

  4. Получаване на HTML отговор вместо JSON в android

  5. Как да дедекларирате томове в изображението на docker?