我需要一些SQL Server查询的帮助。我有三个表文档,模块和文件夹。
Document
表
Id Title type data folderid
Module
表
Id label moduleId folderid
Folder
表
Id label
如果文档表中的type = 1,我想从folderid
表中获取module
,否则它应该从自身获取id
我在下面尝试了查询
SELECT m.*
FROM modules m
LEFT JOIN documents ed ON CAST(m.moduleId AS VARCHAR) = ed.data
where m.folderId = 35 OR ed.folderid =35
但是如果条件在哪里可以告诉我怎么办?
我无法写提前致谢
答案 0 :(得分:1)
SELECT m.*
FROM modules m
LEFT JOIN documents ed ON CAST(m.moduleId AS VARCHAR) = ed.data
where (type = 1 and m.folderId = 35)
OR (type <> 1 and ed.folderid = 35)
答案 1 :(得分:1)
另一种选择是案例表达。
SELECT m.*
FROM modules m
LEFT JOIN documents ed ON CAST(m.moduleId AS VARCHAR) = ed.data
where case when type = 1
then m.folderId
else ed.folderid
end = 35