powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Определить наличие хотя бы одной строки в таблице(ASE 12)
7 сообщений из 7, страница 1 из 1
Определить наличие хотя бы одной строки в таблице(ASE 12)
    #35609860
JenyaD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Определить наличие хотя бы одной строки в таблице с заданным значением столбца dov_id.
Определение с помощью запроса вида (Select count(*) from xxx where dov_id = n) > 0 не устраивает, так как будет осуществляться перебор всех строк таблицы.
...
Рейтинг: 0 / 0
Определить наличие хотя бы одной строки в таблице(ASE 12)
    #35609891
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
построить индекс по этому полю и операций поиска будет минимум ;)
...
Рейтинг: 0 / 0
Определить наличие хотя бы одной строки в таблице(ASE 12)
    #35609989
kolchanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант
where exists (select 1 from xxx where dov_id = n)
...
Рейтинг: 0 / 0
Определить наличие хотя бы одной строки в таблице(ASE 12)
    #35610151
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JenyaD wrote:

> Определить наличие хотя бы одной строки в таблице с заданным значением
> столбца dov_id.

if exists (select 1 from xxx where dov_id = 'xxxx')

> Определение с помощью запроса вида (Select count(*) from xxx where
> dov_id = n) > 0 не устраивает, так как будет осуществляться перебор всех
> строк таблицы.

Ну не обязательно, если есть хороший индекс.
Другое дело, что вам не нужно считать эти записи, а вы написали
count. Это лишнее.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Определить наличие хотя бы одной строки в таблице(ASE 12)
    #35611586
JenyaD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я как раз пробую с помощью "select 1 from ...", однако возникли проблемы.

Есть 2 запроса :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select DOV_ID,DOV_N_V,(case when (Select  1  from dbo.TREE_DOV where TREE_DOV.DOV_ID = DOV.DOV_ID) is NULL then  0  else  1  end) as DOV_NPER
from DOV 
where  PROD =  1   AND RID = '3'


select DOV_ID,DOV_N_V,(case when (Select count(*) from dbo.TREE_DOV where TREE_DOV.DOV_ID = DOV.DOV_ID) > 0  then  1  else  0  end) as DOV_NPER
from DOV 
where  PROD =  1   AND RID = '3'

Эти запросы дают разное количество строк, хотя условие where у них одинаковые, я привык к SQL Anywhere - там такого нету. Нужно строки, для которых присутствуют данные в таблице TREE_DOV поставить значение 1, а где нету - 0 .
...
Рейтинг: 0 / 0
Определить наличие хотя бы одной строки в таблице(ASE 12)
    #35612789
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вам же писали про exists!
Код: plaintext
1.
2.
3.
select DOV_ID,DOV_N_V,(case when exists(Select  1  from dbo.TREE_DOV where TREE_DOV.DOV_ID = DOV.DOV_ID) then  1  else  0  end) as DOV_NPER
from DOV 
where  PROD =  1   AND RID = '3'
...
Рейтинг: 0 / 0
Определить наличие хотя бы одной строки в таблице(ASE 12)
    #35612894
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JenyaD wrote:

> Эти запросы дают разное количество строк, хотя условие where у них
> одинаковые, я привык к SQL Anywhere - там такого нету.

Этого не можнет быть. Поля в списке вывода на where не влияют.
Так что у вас просто видимо меняются данные.

Нужно строки, для
> которых присутствуют данные в таблице TREE_DOV поставить значение 1, а
> где нету - 0 .
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Определить наличие хотя бы одной строки в таблице(ASE 12)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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