Size: a a a

DBA - русскоговорящее сообщество

2021 February 11

SH

Slava Hiller in DBA - русскоговорящее сообщество
Добрый день, коллеги!
источник

SH

Slava Hiller in DBA - русскоговорящее сообщество
Возникла следующая проблема.
источник

SH

Slava Hiller in DBA - русскоговорящее сообщество
Есть таблица, содержащая подразделения с иерархической структурой, т.е. одни подразделения могут быть "родителями" других.
источник

SH

Slava Hiller in DBA - русскоговорящее сообщество
Нужно поднять все поля заданного подразделения, а так же сведения  о том, есть ли у него дочерние подразделения.
источник

SH

Slava Hiller in DBA - русскоговорящее сообщество
Получается затык
источник

SH

Slava Hiller in DBA - русскоговорящее сообщество
SELECT (SELECT COUNT(*) FROM DEPARTMENT WHERE ISN_HIGH_NODE = 3614) as ChildCount, * FROM DEPARTMENT WHERE ISN_NODE = 3614
источник

SH

Slava Hiller in DBA - русскоговорящее сообщество
Вот такой SQL работает нормально
источник

SH

Slava Hiller in DBA - русскоговорящее сообщество
SELECT ((SELECT COUNT(*) FROM DEPARTMENT WHERE ISN_HIGH_NODE = 3614) > 0) as HasChild, * FROM DEPARTMENT WHERE ISN_NODE = 3614
источник

SH

Slava Hiller in DBA - русскоговорящее сообщество
А вот такой - нет
источник

SH

Slava Hiller in DBA - русскоговорящее сообщество
Внимание вопрос! Почему нельзя полученный на лету Count сравнить с нулем и заселектить ответ в качестве поля?
источник

SH

Slava Hiller in DBA - русскоговорящее сообщество
СУБД MS SQL
источник

SC

Serega Carbon in DBA - русскоговорящее сообщество
Slava Hiller
Внимание вопрос! Почему нельзя полученный на лету Count сравнить с нулем и заселектить ответ в качестве поля?
лучш вообще не юзать Count )
источник

SH

Slava Hiller in DBA - русскоговорящее сообщество
А как? Я пробовал Exists, а его походу вообще нельзя в селекте использовать
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Slava Hiller
Внимание вопрос! Почему нельзя полученный на лету Count сравнить с нулем и заселектить ответ в качестве поля?
можно
источник

SH

Slava Hiller in DBA - русскоговорящее сообщество
А как?
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Slava Hiller
SELECT ((SELECT COUNT(*) FROM DEPARTMENT WHERE ISN_HIGH_NODE = 3614) > 0) as HasChild, * FROM DEPARTMENT WHERE ISN_NODE = 3614
SELECT CASE when (SELECT COUNT(*) FROM DEPARTMENT WHERE ISN_HIGH_NODE = 3614) > 0 then 1 else 0 end as HasChild, * FROM DEPARTMENT WHERE ISN_NODE = 3614
источник

SH

Slava Hiller in DBA - русскоговорящее сообщество
Спасибо большое
источник

SH

Slava Hiller in DBA - русскоговорящее сообщество
Я правда сам до этого додумался, но мне решение показалось черезчур громоздким
источник

SH

Slava Hiller in DBA - русскоговорящее сообщество
Но раз уж гуру эскуэля то же самое советуют, значит и впрямь другого выхода нет
источник

ФГ

Федор Гулин... in DBA - русскоговорящее сообщество
Slava Hiller
Внимание вопрос! Почему нельзя полученный на лету Count сравнить с нулем и заселектить ответ в качестве поля?
Having ???
 Чем не устраивает то
источник