Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Определить наличие хотя бы одной строки в таблице(ASE 12) / 7 сообщений из 7, страница 1 из 1
22.10.2008, 16:59
    #35609860
JenyaD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить наличие хотя бы одной строки в таблице(ASE 12)
Определить наличие хотя бы одной строки в таблице с заданным значением столбца dov_id.
Определение с помощью запроса вида (Select count(*) from xxx where dov_id = n) > 0 не устраивает, так как будет осуществляться перебор всех строк таблицы.
...
Рейтинг: 0 / 0
22.10.2008, 17:10
    #35609891
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить наличие хотя бы одной строки в таблице(ASE 12)
построить индекс по этому полю и операций поиска будет минимум ;)
...
Рейтинг: 0 / 0
22.10.2008, 17:47
    #35609989
kolchanov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить наличие хотя бы одной строки в таблице(ASE 12)
Как вариант
where exists (select 1 from xxx where dov_id = n)
...
Рейтинг: 0 / 0
22.10.2008, 18:56
    #35610151
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить наличие хотя бы одной строки в таблице(ASE 12)
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
23.10.2008, 13:12
    #35611586
JenyaD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить наличие хотя бы одной строки в таблице(ASE 12)
Я как раз пробую с помощью "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
23.10.2008, 17:42
    #35612789
MichaelTim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить наличие хотя бы одной строки в таблице(ASE 12)
Вам же писали про 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
23.10.2008, 18:17
    #35612894
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить наличие хотя бы одной строки в таблице(ASE 12)
JenyaD wrote:

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

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

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


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