2016-07-11 10 views
0

SQL Serverクエリでいくつかのヘルプが必要です。私は3つのテーブル文書、モジュール、およびフォルダを持っています。SQL Server:条件の設定方法

Documentテーブル

Id Title type data folderid 

Moduleテーブル

Id label moduleId folderid 

Folderテーブル

Id label 

、私はmoduleテーブルからfolderidを取得したいタイプ=ドキュメント表の1の場合、それ以外の場合SHO ULDは、私は、クエリ

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 

の下にしようとした

自体からIDを取るしかし、私は誰も私を伝えることができる場所での条件私はそれを行うことができる方法ならば書くことができないのですか?事前に

おかげ

+0

このSELECT Mを試みる。* モジュールからは LEFT JOIN文書がON編M(CAST(m.moduleId AS VARCHAR)= ed.data) ここで(ed.type = 1とm.folderId = 35 ) または(ed.type <> 1およびed.folderid = 35) –

答えて

1

別のオプションは、case式になります。

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 
+0

完璧な感謝alot :) – user3198315

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)