Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проверка на наличие записи в другой таблице. / 11 сообщений из 11, страница 1 из 1
03.06.2019, 14:36
    #39821706
Hopfen_Artur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка на наличие записи в другой таблице.
Честно поискал на форуме ответ на вопрос, не нашел.

Есть две таблицы, нужно проверить есть ли id из первой таблицы во второй, и вывести 1 или 0.

Запрос мой такой:

Код: sql
1.
2.
3.
SELECT JR.Oid ,CL.done
FROM  journal as JR
left join check as CL on CL.journal = JR.Oid



Например в таблице check в столбце journal может быть oid из таблицы journal.

На выходе хотелось бы примерно такой результат:
Oid done4FF20401-0816-11E9-BB99-00155D754600 0DC9A9A18-0816-11E9-BB99-00155D754600 062227781-0814-11E9-BB99-00155D754600 1AAA74E39-85DB-11E9-BB9F-00155D754600 1B1894460-080E-11E9-BB99-00155D754600 0DDC3AF59-0813-11E9-BB99-00155D754600 1
...
Рейтинг: 0 / 0
03.06.2019, 14:57
    #39821725
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка на наличие записи в другой таблице.
case используйте или iif
...
Рейтинг: 0 / 0
03.06.2019, 15:17
    #39821746
Hopfen_Artur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка на наличие записи в другой таблице.
попробовал написать так:

Код: sql
1.
2.
3.
4.
SELECT JR.Oid 
      ,CASE WHEN CL.journal IS NULL THEN 0 ELSE 1 END done
FROM  journal as JR
left join check as CL on CL.journal = JR.Oid



но он выводит много строк если в таблице check есть повторяющийся id.
...
Рейтинг: 0 / 0
03.06.2019, 15:18
    #39821747
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка на наличие записи в другой таблице.
Hopfen_Artur,

COUNT проверять
...
Рейтинг: 0 / 0
03.06.2019, 15:35
    #39821757
Hopfen_Artur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка на наличие записи в другой таблице.
так заработало, это правильный запрос:
смущает group by

Код: sql
1.
2.
3.
4.
5.
SELECT JR.Oid 
      ,CASE WHEN COUNT(CL.journal) = 0 THEN 0 ELSE 1 END as done
FROM  journal as JR
left join check as CL on CL.journal = JR.Oid
group by JR.Oid
...
Рейтинг: 0 / 0
03.06.2019, 15:40
    #39821761
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка на наличие записи в другой таблице.
Hopfen_Artur,


авторсмущает group by
краснеете?
...
Рейтинг: 0 / 0
03.06.2019, 15:44
    #39821767
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка на наличие записи в другой таблице.
Hopfen_Arturсмущает group byПравильно смущает.
Без него:
Код: sql
1.
2.
3.
SELECT JR.Oid 
      ,CASE WHEN exists(select 1 from [check] where journal = JR.Oid) THEN 1 ELSE 0 END done
FROM  journal as JR
...
Рейтинг: 0 / 0
03.06.2019, 15:47
    #39821770
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка на наличие записи в другой таблице.
Код: sql
1.
2.
3.
4.
5.
SELECT 
      JR.Oid, 
      CASE WHEN CL.journal IS NULL THEN 0 ELSE 1 END done
FROM  journal as JR left outer join (SELECT DISTINCT journal FROM [check]) as CL 
  on CL.journal = JR.Oid;
...
Рейтинг: 0 / 0
03.06.2019, 16:02
    #39821787
Hopfen_Artur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка на наличие записи в другой таблице.
всем спасибо =)
...
Рейтинг: 0 / 0
03.06.2019, 16:03
    #39821788
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка на наличие записи в другой таблице.
Код: sql
1.
2.
3.
SELECT JR.Oid 
      ,ISNULL((SELECT TOP(1) 1 FROM [check] WHERE journal = JR.Oid),0) done
FROM  journal as JR;
...
Рейтинг: 0 / 0
05.06.2019, 10:41
    #39822677
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка на наличие записи в другой таблице.
iap
Код: sql
1.
2.
3.
SELECT JR.Oid 
      ,ISNULL((SELECT TOP(1) 1 FROM [check] WHERE journal = JR.Oid),0) done
FROM  journal as JR;



Все извращаются. Можно, я тоже?
Код: sql
1.
2.
3.
4.
5.
SELECT JR.Oid 
      ,ISNULL(t.Yes, 0) done
FROM  journal as JR
		outer apply (Select 1
				 Where exists (Select 1 FROM [check] WHERE journal = JR.Oid)) t(Yes)


Хотя план, наверняка будет говно.
:-)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проверка на наличие записи в другой таблице. / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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