在SQL中连接三个表

时间:2013-03-21 11:05:42

标签: sql

我有三张桌子

File
- fileId(pk), code, & description
Hierarchy
 - fileId(fk), folderId(fk), folderKey(pk)
Folder
 - folderId(pk), folderName

在Hierarchy表中,fileId对于文件夹为null,而folderId对于文件为null。 我正在尝试加入所有三个以获取哪个文件位于哪个文件夹中。

此查询没有给我任何结果

SELECT File.fileId, File.code, File.description, Hierarchy.folderId, 
       Hierarchy.folderKey, Folder.folderName
FROM  File INNER JOIN
      Hierarchy ON File.fileId = Hierarchy.fileId INNER JOIN
      Folder ON Hierarchy.folderId = Folder.folderId

任何线索?

问候。

3 个答案:

答案 0 :(得分:0)

这有用吗?

SELECT     File.fileId, File.code, File.description, Hierarchy.folderId, 
           Hierarchy.folderKey, Folder.folderName
FROM       File 
JOIN       Hierarchy ON File.fileId = Hierarchy.fileId
LEFT JOIN  Folder ON Hierarchy.folderId = Folder.folderId

答案 1 :(得分:0)

试试这个:

Select x.fileId, x.code, x.description, fd.folderId, x.folderKey, fd.folderName
From  Folder fd Left Join (
          select f.fileid, f.code, f.description, h.folderId, h.folderKey
          from [File] f join Hierarchy h 
                    on f.fileId = h.fileId ) x
         on fd.folderId = x.folderId

答案 2 :(得分:0)

如果所有表中的数据都相互对应,则查询中没有问题。如果任何两个有和第三个可能没有相应字段的数据,那么您的内部联接将不会产生任何结果。左连接你的表,其中可能没有数据。