2016-01-21 58 views
0

談話我有4個表:SQL請求來選擇由用戶ID

  1. 對話
  2. conversations_users
  3. 消息
  4. 用戶

的對話結構表是:

  • ID(主鍵)
  • 標題(會話標題)

的conversations_users結構表是:

  • ID(主鍵)
  • 的conversationId(對話ID,其中用戶是in)
  • userID(與會話ID相關聯的用戶)

這些消息結構表是:

  • ID(主鍵)
  • 消息(該消息文本)
  • 的conversationId(對話ID,其中該消息是在)
  • senderID(用戶ID誰發送的消息)
  • 日期消息的(時間戳)的

在使用者結構表是:

  • ID(主鍵)
  • 用戶名

我想顯示的用戶,以便僅在對話,其中用戶是所有的談話(標題,最後的消息,和最後一個消息時戳)英寸

如何處理SQL請求?我想這會是這樣:

SELECT c.title, m.message, m.date 
FROM conversation c 
INNER JOIN conversation_users cu 
ON ... 
INNER JOIN messages m 
ON ... 
INNER JOIN users u 
ON ... 
GROUP BY u.id 
+0

當用戶ID將從何而來?這是自動增量還是這個外鍵? – Kiyarash

+0

有一張表「用戶」,每個用戶都有一個唯一的ID!我忘了提及。剛剛編輯主題:) – Xavier

回答

1
select usr.userID, 
     cvs.title, 
     msg.message, 
     times.date 
from conversations_users usr 
left join conversations cvs on usr.conversationID = cvs.id 
left join messages msg on usr.conversationID = msg.conversationID 
left join 
    (select usr.userID, 
     MAX(msg.date) as date 
    from conversations_users usr 
    left join messages msg on usr.conversationID = msg.conversationID 
    group by usr.userID) times on times.userID= usr.userID and times.date=msg.date 
+0

謝謝兄弟'! – Xavier