Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / EXISTS в перечислении полей SELECT / 6 сообщений из 6, страница 1 из 1
17.06.2017, 20:01
    #39473657
Любезный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXISTS в перечислении полей SELECT
Приветствую уважаемых коллег.

Такой вопрос. FB2.5. Можно ли как-нибудь вытянуть в список полей оператора SELECT признак существования записи/записей в справочной таблице без использования ХП? Пока приходит в голову только хватать COUNT со сравнением на клиенте, но ясен пень, что при больших выборках это неоптимально. Предикат EXISTS, увы, работает только за WHERE.
Код: sql
1.
SELECT (SELECT COUNT (T2F1) FROM T2 WHERE T2F2=T1.T1F0) FROM T1;
...
Рейтинг: 0 / 0
17.06.2017, 20:04
    #39473658
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXISTS в перечислении полей SELECT
Любезный,

да ну. EXISTS возвращает BOOLEAN в 3.0.
А в 2.5 можно например вот так

CASE
WHEN EXISTS(...)
THEN 1
ELSE 0
END
...
Рейтинг: 0 / 0
17.06.2017, 20:09
    #39473660
Любезный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXISTS в перечислении полей SELECT
Спасибо, сейчас попробую.
...
Рейтинг: 0 / 0
17.06.2017, 20:35
    #39473664
Любезный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXISTS в перечислении полей SELECT
Всё пошло. Так как у меня 2.5, сделал через CASE. При классическом EXISTS до WHERE без CASE 2.5 ругался, потому я собственно этот вопрос и задал.
...
Рейтинг: 0 / 0
17.06.2017, 23:31
    #39473695
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXISTS в перечислении полей SELECT
Любезный,

можно просто "приджойнить слева" этот справочник, если поиск идет по уникальному для справочника значению (или, если в справочнике несколько таких значений - добавить distinct).
В некоторых случах такой способ работает быстрее, чем с exists. В некоторых.
...
Рейтинг: 0 / 0
19.06.2017, 10:28
    #39473974
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXISTS в перечислении полей SELECT
чччД,

Если "по уникальному для справочника значению", то таких случаев как раз нет. Да и вообще для LEFT JOIN.
Они равны, ведь способ обращения к данным идентичен.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / EXISTS в перечислении полей SELECT / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]