在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
列值存在于文件中?左联接
将返回左侧表(层次结构
)中的所有行,即使右侧表(文件夹
)中没有匹配项-如果结果集中的文件夹
列都为空,则会出现这种情况。我认为您在本页上尝试的查询就您试图实现的目标而言是正确的,但是表中的数据并非如您所期望的那样。检查您的数据。