2016-07-11 5 views
0

Мне нужна помощь в запросе SQL Server. У меня есть три таблицы документов, модулей и папок.SQL Server: как установить условие, в котором

Document стол

Id Title type data folderid 

Module стол

Id label moduleId folderid 

Folder стол

Id label 

Если тип = 1 в планшете, я хочу, чтобы получить folderid из module таблицы в противном случае это шо пакетирования взять идентификатор из себя

Я попытался ниже запрос

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

попробовать этот SELECT, м. * ОТ модулей м LEFT JOIN документы ред ПО (CAST (m.moduleId А.С. УАКСНАК) = ed.data) где (ed.type = 1 и m.folderId = 35) или (ed.type <> 1 и ed.folderid = 35) –

ответ

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 
+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) 
Смежные вопросы