0

次の表では、特定のアカウントのすべてのユーザーとそのグループを選択したいと思います。

USERS 
-id
-name
-groupid
-accountid


GROUPS 
-id
-name
-accountid

私は次のことをしています:

SELECT 
USERS.ID,
USERS.NAME,
GROUPS.ID,
GROUPS.NAME,    
FROM GROUPS JOIN USERS ON USERS.ACCOUNTID= GROUPS.ACCOUNTID
WHERE GROUPS.ACCOUNTID=1

何らかの理由で結果が 3 回繰り返されます (これはグループの数です)。各ユーザーは、異なる GROUPID で 3 回表示されます。

update代わりにGROUPIDで参加すると、提案されたようになります。私は次のようになります。ご覧のとおり、グループに複数のユーザーがいる場合でも、グループごとに 1 人のユーザーのみが表示されます。

USER_ID  GROUP_ID     GROUP_NAME        NAME
42            6        Teacher      John E. 
59            8        Student      Bill W. 
4

1 に答える 1

1

GROUPID ではなく ACCOUNTID で参加するため、各ユーザーは異なる GROUPID で 3 回表示されます。

以下を試すことができます。つまり、GROUPID に参加します。

SELECT 
USERS.ID,
USERS.NAME,
GROUPS.ID,
GROUPS.NAME    
FROM USERS JOIN GROUPS ON USERS.GROUPID= GROUPS.ID
WHERE GROUPS.ACCOUNTID=1

更新: http://sqlfiddle.com/#!2/3afee/1

于 2012-07-03T02:30:17.890 に答える