2014-04-05 77 views
0

我正在構建一個聊天應用程序的數據庫,並且我在構建View以將聊天表和用戶表組合起來時遇到了麻煩。如何從多個表中的多行創建視圖?

Chats表的字段爲sender_idreceiver_id,它映射到Users表中的user_id字段。現在,我想要創建一個View,它將ChatsUsers表合併在一起,並且還提供發件人和收件人的個人資料圖片(位於sender_picreceiver_pic的字段中)。這些可以從Users表中的profile_pic字段獲取。

什麼是這樣做的SQL語法?

回答

1

你的語法將如下,因爲你需要發送者和接收者需要加入用戶表的兩倍。

CREATE VIEW SomeFancyName 
AS 
    SELECT s.profile_pic AS sender_pic 
      ,r.profile_pic AS receiver_pic 
     FROM Chats c 
     JOIN users s 
      ON c.sender_id = s.user_id 
     JOIN users r 
      ON c.receiver_id = s.user_id 

現在你可以添加你從每個

0

你必須使用別名:

SELECT 
    s.profile_pic AS sender_pic, 
    r.profile_pic AS receiver_pic 
FROM 
    Chats 
INNER JOIN 
    Users AS s  -- s will represent the sender 
ON 
    Chats.sender_id = s.user_id 
INNER JOIN 
    Users AS r  -- and r the receiver 
ON 
    Chats.receiver_id = r.user_id; 
0

您需要JOINChats表與表Users需要列。

當你有2個連接到同一個表(一個用於接收,一個用於發送),你還需要使用表的別名來區分它們:

SELECT Chats.sender_id, Sender.profile_pic as Sender_profile_pic, 
     Chats.receiver_id, Receiver.profile_pic as Receiver_profile_pic, ... 
    FROM Chats 
    JOIN Users Receiver ON Users.user_id = Chats.receiver_id 
    JOIN Users Sender ON Users.user_id = Chats.sender_id