如何在单个 sql 查询中处理多对多关系?
How to handle many-to-many relationships in a single sql query?
我整个上午都在 运行 SQL 电话中,但没有任何运气能够获得我想要 return 的正确数据类型。我进行了一些搜索,发现了一些关于加入 2 table 的信息,但没有任何来自 table 的信息,也没有来自 table 的信息。这在措辞上听起来可能令人困惑,因此我精心制作了一张图表,展示了我希望获得的信息类型。
我尝试过
select * from Users
left join UserLibs on UserLibs.userId = Users.UserId
WHERE Users.username='testname'
然而,这并没有给我图书馆的名字。
所以我厌倦了加入另一个 table 和专栏。
select * from users
left join UserLibs on userLibs.userId = Users.UserId AND left join Libraries on UserLibs.libraryId = Libraries.libraryName
where Users.username='test';
这也没有产生结果,只是错误。任何帮助都会很棒。
更新
我只是想添加适合我的情况的最终解决方案。
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';
我整个上午都在 运行 SQL 电话中,但没有任何运气能够获得我想要 return 的正确数据类型。我进行了一些搜索,发现了一些关于加入 2 table 的信息,但没有任何来自 table 的信息,也没有来自 table 的信息。这在措辞上听起来可能令人困惑,因此我精心制作了一张图表,展示了我希望获得的信息类型。
我尝试过
select * from Users
left join UserLibs on UserLibs.userId = Users.UserId
WHERE Users.username='testname'
然而,这并没有给我图书馆的名字。
所以我厌倦了加入另一个 table 和专栏。
select * from users
left join UserLibs on userLibs.userId = Users.UserId AND left join Libraries on UserLibs.libraryId = Libraries.libraryName
where Users.username='test';
这也没有产生结果,只是错误。任何帮助都会很棒。
更新
我只是想添加适合我的情况的最终解决方案。
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';