-1

我有三张桌子

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

在 Hierarchy 表中,文件夹的 fileId 将为空,而文件的 folderId 将为空。我正在尝试加入所有三个以获取哪个文件在哪个文件夹中。

这个查询没有给我任何结果

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

有什么线索吗?

问候。

4

3 回答 3

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
于 2013-03-21T11:14:24.647 回答
0

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

于 2013-03-21T11:14:36.987 回答
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
于 2013-03-21T11:10:57.603 回答