@Andre545545

Как сделать выборку из 2 таблицы булевым значением?

У меня есть 2 таблицы связанные по id. Мне нужно взять данные из 1 таблицы и булево значение если во второй нашлись данные

SELECT a.id, a.rank, a.firstname, a.name, 
a.secondname, boolean
FROM table1 as a
JOIN table2 as b on b.table1id = a.id and b.dateto < ?
  • Вопрос задан
  • 173 просмотра
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
Вывод логического типа колонки должна поддерживать СУБД.
А так, на практике, гарантировано можно работать с нулл/не нулл или 0/ не 0 флагами.
а) Использовать left join и проверять не нулл значение, какого нибудь поля присоединенной таблицы (например, b.table1id).
SELECT distinct a.id, a.rank, a.firstname, a.name, 
a.secondname, b.table1id
FROM table1 as a
left JOIN table2 as b on b.table1id = a.id and b.dateto < ?

б) Или считать количество строк подзапросом у порисоединенной таблицы. Можно оптимизировать, отрезав по первой записи rownum = 1, тогда cnt получите 0 или 1.
SELECT a.id, a.rank, a.firstname, a.name, 
a.secondname, (select count(*) from table2 as b on b.table1id = a.id and b.dateto < ? and rownum = 1) cnt
FROM table1 as a

в) Если поддерживается логика в выводе колонки:
SELECT a.id, a.rank, a.firstname, a.name, 
a.secondname, exists(select 1 from table2 as b on b.table1id = a.id and b.dateto < ?) as is_exists
FROM table1 as a
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы