我正在尝试创建一个相当混乱的 SQL 查询,我似乎无法弄清楚它的代码。
在我的示例中,我正在查询四个表:
- 用户
- 文件
- 网络
- 网络_文档
在我的数据库中,有以下规则: 用户可以创建自己的文档 用户可以是网络的成员。他们可以选择将自己的一些文档分配给网络。文档和网络之间的链接存储在“Network_Documents”中,其中存储了 DocumentID 和 NetworkID。
我要做的是创建一个查询来检索分配给网络的所有文档。例如,假设以下是我的数据库数据:
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,我检索到以下两个文档。
文档网络: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;
上面的查询好像产生了几百!记录,它们几乎都是重复的。编写此类查询的正确方法是什么?
谢谢你的帮助