我有一個相當簡單的數據庫,包括4個表:SQL查詢,一個是結表
Table 1: USERS
Columns: userID, user_name
Table 2: GROUPS
Columns: groupID, group_name
Table 3 (Junction Table): GROUP_MATRIX
Columns: userID, groupID
Table 4: Messages
Columns: messageID, message, userID, groupID
我想用下面的格式結果全部郵件的查詢:
user_name, message
我形成像這樣的查詢:
SELECT USERS.user_name, MESSAGES.message
FROM GROUP_MATRIX
JOIN USERS on GROUP_MATRIX.userID = USERS.userID
JOIN MESSAGES on GROUP_MATRIX.userID = MESSAGES.userID
它有點工作,但我得到一些重複結果回來。看起來,如果user_ID不止一次出現在GROUP_MATRIX中,那就是當我得到該用戶的重複結果時。很明顯,我不明白我試圖做的JOIN,有人能幫我理解我做錯了什麼嗎?
您是否嘗試過加入'DISTINCT'關鍵字的選擇'SELECT DISTINCT USERS.user_name,MESSAGES.message'?但是,如果每個用戶都有重複的消息,在這種情況下,「DISTINCT」將不起作用,您必須決定選擇哪個消息。那麼在這種情況下,您想要爲每個用戶顯示哪條消息?最新的?或者是什麼? – 2013-02-14 06:44:04
另外,三個表格和所需輸出的示例數據將非常有幫助。 – 2013-02-14 06:48:21
啊,DISTINCT做到了。我不知道那個關鍵詞。我也許應該有不同的措辭...... MESSAGES表中沒有實際重複的消息,而是我在結果中多次返回相同的消息,因爲相同的用戶ID可能會在GROUP_MATRIX中多次顯示錶。 – Axl 2013-02-14 06:56:25