私は、それらを一緒にマップする3番目のテーブルに基づいて、2つのテーブルからJOIN/UNION/任意のデータを作成しようとしています。これがアイデアです:
表 USERS には、ユーザー ID、ユーザー名、その他のデータが含まれています。テーブル GROUPS には、グループ ID、グループ名、その他のデータが含まれています。
テーブル USERGROUPMAP には、一緒にマップされた一連のユーザー ID とグループ ID が含まれており、これらは USERS と GROUPS の ID に対応しています。各ユーザーは複数のグループに属することができ、各グループは複数のユーザーを持つことができます。
オブジェクトまたは CSV データを 1 つのフィールドに格納することで常にこれを行ってきました。たとえば、MEMBERS というグループで列を作成し、id1、id2、id3 を格納しています...しかし、これが提示されたものです。
スキーマを変更できません...これがJOINやUNIONなどに関係していることは知っていますが、私のSQLは非常に錆びているので、誰か助けてもらえますか?
私のおそらく半正しい考え -
SELECT USERS.uid,
GROUPS.gid,
USERGROUPMAP.uid,
USERGROUPMAP.gid
FROM USERS,
GROUPS,
USERGROUPMAP
JOIN ON ((USERS.uid = USERGROUPMAP.uid) AND (GROUPS.gid = USERGROUPMAP.gid))
任意のヒント?:( .. みんなありがとう。
編集、予想される IO
USERS テーブルには一連の UID が含まれています... 1、2、3、4、5、したがって、GROUPS テーブルには一連の GID、1000、1001、1002 などが含まれます。
USERGROUPMAP には、どのユーザーがどのグループに属しているかに対応するタプルが含まれます (例: (1,1002) (2,1000) (5,1003) (5,1000))。
ユーザーが属しているグループのリストを取得しようとしているので、この例では 5,1003 と 5,1000 の 2 つの行を取得したいと考えています。