![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вычислимое поле в запросе [D6, MSSQL]
Alx2 © (2005-01-24 14:58:00)Выбираю записи из базы с помощью select
Хочу чтобы в выборку попало фиктивное поле (вычисляемое) говорящее о том, что идентификатор данной записи встречается в другом select.
Более подробно:
В результирующем запросе должно стоять поле "D" = 1, если идентификатор ID текущей записи встречается в
SELECT Id
FROM Goals t1
WHERE EXISTS
(SELECT t2.id
FROM goals AS t2
WHERE t2.dependences = t1.id)
Как делаются такие поля?
Alx2 (2005-01-24 15:42:00) [1]>Johnmen © (24.01.05 15:30) [5]
Спасибо! Все получилось отлично.
Johnmen (2005-01-24 15:30:00) [2]
SELECT Id, WHEN (xxx)>0 THEN 1 ELSE 0где
FROM Goals t1
xxx есть
SLECT COUNT(*) FROM Goals t2 WHERE t2.dependences = t1.id
Stanislav (2005-01-24 15:22:00) [3]select
MAX(case
when g2.id is null then 1
else 0
end) as D
from goals g1
left join goals g2 on g1.id = g2.dependences
group by g1.id
Alx2 (2005-01-24 15:15:00) [4]Вдогонку: distinct работать отказывается, так как присутствуют MEMO-поля
Alx2 (2005-01-24 15:13:00) [5]>Соловьев © (24.01.05 15:05) [1]
Спасибо, работает!
Но есть проблема:
Множатся строчки, для которых g1.id = g2.dependences имеет место быть более одного раза.
То есть количество дублей равняется количеству записей в подзапросе
SELECT t2.id
FROM goals AS t2
WHERE t2.dependences = t1.id
Соловьев (2005-01-24 15:05:00) [6]select
case
when g2.id is null then 1
else 0
end as D
from goals g1
left join goals g2 on g1.id = g2.dependences