3

4 つのテーブルで構成されるかなり単純なデータベースがあります。

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を理解していません。誰かが私が間違っていることを理解するのを手伝ってくれますか?

4

2 に答える 2

3

DISTINCT次のようにSELECT句でキーワードを使用します。

SELECT DISTINCT USERS.user_name, MESSAGES.message
FROM GROUP_MATRIX
JOIN USERS on GROUP_MATRIX.userID = USERS.userID
JOIN MESSAGES on GROUP_MATRIX.userID = MESSAGES.userID;
于 2013-02-14T07:07:58.913 に答える
2

user_name とメッセージのみが必要なため、グループとジャンクション テーブルは使用しません。

Select 
   us.user_name, msg.message 
   from Messages as msg 
   LEFT JOIN USERS as us ON (msg.userID = us.userID)
   groupby msg.messageID
于 2013-02-14T06:53:52.617 に答える