-1

私は3つのテーブルを持っています

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

階層テーブルでは、fileIdはフォルダーの場合はnullになり、folderIdはファイルの場合はnullになります。3つすべてを結合して、どのファイルがどのフォルダーにあるかを取得しようとしています。

このクエリでは結果が得られません

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     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 に答える
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

そこにあるすべてのテーブルに互いに対応するデータがある場合、クエリに問題はありません。2 番目と 3 番目に対応するフィールドのデータがない場合、内部結合では結果が得られません。データが含まれていない可能性があるテーブルを左に結合します。

于 2013-03-21T11:14:36.987 に答える