コードを理解できないように見える、ややこしいSQLクエリを作成しようとしています。
私の例では、4 つのテーブルをクエリしています。
- ユーザー
- ドキュメント
- ネットワーク
- ネットワーク_ドキュメント
私のデータベースでは、次のルールが適用されています。ユーザーは独自のドキュメントを作成できます。ユーザーはネットワークのメンバーになることができます。独自のドキュメントの一部をネットワークに割り当てることを選択できます。ドキュメントとネットワーク間のリンクは、DocumentID と NetworkID を格納する「Network_Documents」に格納されます。
私がやろうとしているのは、ネットワークに割り当てられているすべてのドキュメントを取得するクエリを作成することです。たとえば、以下が私のデータベース データであるとします。
userID userName userEmail
1 Adam 1@m.net
2 Greg 2@m.net
3 Tony 3@m.net
docID docName docContents docCreator(FK)
1 document01 dcmnt01A 1
2 document02 dcmnt02B 2
3 document03 dcmnt03C 3
networkID networkName networkCreator(FK)
1 network01 1
2 network02 2
3 network03 3
docnetID netID(FK) docID(FK)
1 1 1
2 1 3
3 2 9999
ここで行う必要があるのは、ネットワークに関連付けられたすべてのドキュメントを取得する SELECT クエリを作成することです。たとえば、network01 に対してクエリを実行すると、次の 2 つのドキュメントが取得されます。
ドキュメントネットワーク: network01
ドキュメント名: document01
ドキュメント作成者: Adam
ドキュメント ネットワーク: network01
ドキュメント名: document03
ドキュメント作成者: Tony
次の SQL クエリは、特定のネットワークからすべてのドキュメント (およびその作成者) を選択すると思いました。
SELECT users.userID, users.userName,
documents.docID, documents.docName, documents.docContents, documents.docCreator
networks.networkID, networks.networkName, networks.networkCreator,
network_documents.netID, network_documents.docID
FROM users, documents, networks, network_documents
WHERE networkID = 1;
上記のクエリは、数百を生成するようです! レコードであり、それらはほぼすべて重複しています。このタイプのクエリを構成する正しい方法は何ですか?
助けてくれてありがとう