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

时间:2015-07-20 18:35:35

标签: php mysql sql database mysql-error-1064

我整个上午一直在运行SQL调用,没有任何运气来获取我想要返回的正确类型的数据。我做了一些搜索,发现了一些关于加入2个表的信息,但没有从桌子中拉出来的任何信息。这可能听起来令人困惑,因此我制作了一份我希望获得的信息图表。

enter image description here

我尝试了类似的事情,

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';

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

更新

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

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';

1 个答案:

答案 0 :(得分:4)

您不使用AND来执行多个连接。你只是继续加入表格。您可以加入任意数量的人。例如:

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