繁体   English   中英

如何在单个sql查询中处理多对多关系?

[英]How to handle many-to-many relationships in a single sql query?

我整个上午都在运行SQL调用,但是没有运气来获取要返回的正确类型的数据。 我进行了一些搜索,发现了有关Joining 2 table的一些信息,但是没有任何信息可以从表中获取,也可以从表中获取。 用措辞听起来有些混乱,所以我制作了一张我想获取的信息的图表。

在此处输入图片说明

我已经尝试过诸如

select * from Users 
left join UserLibs on UserLibs.userId = Users.UserId
WHERE Users.username='testname'

但是,这并没有给我库名。

因此,我厌倦了将该列与另一个表和列一起加入。

select * from users
left join UserLibs on userLibs.userId = Users.UserId AND left join Libraries on  UserLibs.libraryId = Libraries.libraryName
where Users.username='test';

这也没有产生结果,只是错误。 任何帮助都会很棒。

UPDATE

我只想添加适合我的情况的最终解决方案。

SELECT Users.userId, Users.username, Users.editLibraries, Users.editAnnouncements, Users.editServices, 
   Users.editNormalHours, Users.editSpecialHours, Users.editUsers, Users.editSemesters, 
   Libraries.libraryName, LibraryDepartment.departmentName
    FROM Users
    LEFT JOIN UserLibs on Users.userId = UserLibs.userId
    LEFT JOIN Libraries on UserLibs.libraryId = Libraries.id
    LEFT JOIN UserDepts on Users.userId = UserDepts.userId
    LEFT JOIN LibraryDepartment on UserDepts.departmentId = LibraryDepartment.ldId
    WHERE Users.username='testname';

您不使用AND执行多个联接。 您只要保持连接表即可。 您可以加入任意多个。 例如:

select *
from users
left join userlibs
on users.userid=userlibs.userid
left join libraries
on userlibs.libraryid=libraries.libraryid
where username='test';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM