我有三张桌子(为此目的而简化)
Table 1: File
id, name
1, File1
2, File2
3, File3
4, File4
Table 2: Meeting_File
id, meeting_id, file_id
1, 1, 1
2, 2, 2
3, 3, 3
4, 4, 4
Table 3: Meeting
id, name, password
1, Bil1/2016, Password1
2, Bil2/2016, Password2
3, Bil3/2016, Password3
4, Bil4/2016, Password4
如果会议密码和文件名共享同一个会议的ID,事情很简单,我们可以使用
SELECT b.password FROM File a
LEFT JOIN Meeting_File c ON c.file_id = a.id
LEFT JOIN Meeting b ON b.id = c.meeting_id
WHERE a.id = 1
但是,在我们的例子中,密码总是在一行之后。
要打开属于Meeting id = 1的File1,我们需要来自Meeting id = 2
的密码要打开属于Meeting id = 2的File2,我们需要来自Meeting id = 3
的密码依旧......
总结一下,我们有过去会议的文件,只能用当前会议的密码打开。
如何获取密码?
答案 0 :(得分:1)
您的数据库设计不佳。你可以使用下面的一些昂贵的SQL
SELECT
(select password from meeting m where id > mf.meeting_id order by meeting_id limit 0,1) as password
FROM File f
LEFT JOIN Meeting_File mf
ON (mf.file_id = f.id)
WHERE f.id = 1;
答案 1 :(得分:0)
只需添加1:
SELECT m.password
FROM File f LEFT JOIN
Meeting_File mf
ON mf.file_id = f.id LEFT JOIN
Meeting m
ON m.id = mf.meeting_id + 1
WHERE f.id = 1;