Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL中连接三个表_Sql - Fatal编程技术网

在SQL中连接三个表

在SQL中连接三个表,sql,Sql,我有三张桌子 File - fileId(pk), code, & description Hierarchy - fileId(fk), folderId(fk), folderKey(pk) Folder - folderId(pk), folderName 在层次结构表中,文件夹的fileId为null,文件的folderId为null。 我正在尝试加入这三个文件夹,以获取哪个文件夹中的文件 这个查询没有结果 SELECT File.fileId, File.code, Fi

我有三张桌子

File
- fileId(pk), code, & description
Hierarchy
 - fileId(fk), folderId(fk), folderKey(pk)
Folder
 - folderId(pk), folderName
在层次结构表中,文件夹的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
有什么线索吗

问候。

这有用吗

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
试试这个:

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

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

您确定这些表中存在一些相关数据吗?查询看起来是合法的,所以问题一定出在您的数据中。另外,请注意保留字,文件可能是层次结构表中的一个
。文件夹的fileId为null,文件的folderId为null。
那么,关系存储在哪里?听起来好像您没有实际存储所需的数据。对于同时具有文件ID和文件所属folderID的每个fileID,您的继承人权限表都应该有一个条目,但根据该语句,folderID对于文件记录始终为空。这会使查询变得比需要的更复杂be@mk_89,这是基于每个文件都应该在文件夹中。实际上,文件夹名称为NULL。文件夹表似乎被忽略。在
层次结构中,任何
文件夹ID
表都与
文件夹中的文件夹ID
表匹配,其中
层次结构.fileId
列值存在于
文件中?
左联接
将返回左侧表(
层次结构
)中的所有行,即使右侧表(
文件夹
)中没有匹配项-如果结果集中的
文件夹
列都为空,则会出现这种情况。我认为您在本页上尝试的查询就您试图实现的目标而言是正确的,但是表中的数据并非如您所期望的那样。检查您的数据。