Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL Pilih GABUNG 3 Tabel

Anda akan membutuhkan dua gabungan. Sesuatu seperti berikut ini akan membantu Anda memulai (walaupun saya tidak 100% memahami hubungan antara pm_data dan 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

Saya mengasumsikan hubungan antara pm_data dan pm_info adalah id threadnya. Jika tidak, Anda harus dapat menyesuaikan di atas dengan apa pun yang Anda butuhkan. Saya juga telah mengurutkan berdasarkan tanggal pengiriman ke sini, tetapi itu tidak akan menyatukan utas . Saya tidak yakin apakah Anda ingin menyatukannya atau tidak dari cara Anda mengutarakan pertanyaan.

Jika Anda ingin menyatukan utas , Anda memerlukan kueri yang lebih rumit:

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

Kueri ini menggunakan subpilihan untuk menemukan tanggal modifikasi terbaru untuk setiap utas, lalu urutkan berdasarkan ini terlebih dahulu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buang semua tabel dalam format CSV menggunakan 'mysqldump'

  2. cara mengatur panjang kolom dalam hibernasi dengan panjang maksimum

  3. Kapan menggunakan MongoDB

  4. Menjumlahkan kolom yang dipisahkan koma di MySQL 4 (bukan 5)

  5. Setel Ulang Kata Sandi Root MySQL di Windows