私は4つのテーブルUSER(ID, USER_ID, NAME), USER_2(ID, USER_ID, EMAIL)
とUSER_CLASS_MAP(ID, USER_ID, CLASS_ID)
とCLASS(ID, NAME)
を持っています。 USER_CLASS_MAP
は基本的にMANY-MANY関係をUSER
とCLASS
の間にマッピングすることです。INNER JOINとINの組み合わせ:Oracle Sql
特定のクラスに属するすべてのユーザーのすべての詳細を送信する必要があります。私は以下のような非作業コードを持っています。何が間違っているのか、それを達成するための他の効率的な方法がありますか?
私は複数のテーブルの上に内部結合のために(SQL Inner-join with 3 tables?)を参照していますが、ここでの問題ではなく、与えられたCLASS_IDに対して単一のユーザーで、私はUSER_CLASS_MAP
からUSER_ID
のリストを取得することです。
SELECT USER_ID from USER_CLASS_MAP where CLASS_ID=:classID
これは私が現在持っているものです。
SELECT USER1.NAME, USER2.EMAIL
INNER JOIN CLASS_USER_MAP as cmap
ON cmap.USER_ID = USER1.ID
INNER JOIN CLASS_USER_MAP as cmap
ON cmap.USER_ID = USER2.ID
ここでの問題は.IDは基本的にリストであるということです!
EXAMPLE:
USER:
(id1, user1, rob)
(id2, user2, bob)
USER_2:
(id1, user1, [email protected])
(id2, user2, [email protected])
USER_CLASS_MAP:
(id1, user1, class1)
(id2, user2, class1)
CLASS:
(class1, Biology)
(class2, Chemistry)
Given:
Get all User Details for class with classId = class1
Output:
[
{USER_ID=user1, NAME=rob, [email protected]},
{USER_ID=user2, NAME=bob, [email protected]}
]
IDはどのようにリストになりますか? – Jens
テーブルごとに*サンプルデータ*を追加し、*期待した結果*を追加すると、これは大幅に向上します。 –
サンプルテーブルのデータと予想される結果を追加します。 (フォーマットされたテキストでもあります) – jarlh