Текущий архив: 2005.02.20;
Скачать: CL | DM;
ВнизВычислимое поле в запросе Найти похожие ветки
← →
Alx2 © (2005-01-24 14:58) [0]Выбираю записи из базы с помощью select
Хочу чтобы в выборку попало фиктивное поле (вычисляемое) говорящее о том, что идентификатор данной записи встречается в другом select.
Более подробно:
В результирующем запросе должно стоять поле "D" = 1, если идентификатор ID текущей записи встречается в
SELECT Id
FROM Goals t1
WHERE EXISTS
(SELECT t2.id
FROM goals AS t2
WHERE t2.dependences = t1.id)
Как делаются такие поля?
← →
Соловьев © (2005-01-24 15:05) [1]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
← →
Alx2 © (2005-01-24 15:13) [2]>Соловьев © (24.01.05 15:05) [1]
Спасибо, работает!
Но есть проблема:
Множатся строчки, для которых g1.id = g2.dependences имеет место быть более одного раза.
То есть количество дублей равняется количеству записей в подзапросе
SELECT t2.id
FROM goals AS t2
WHERE t2.dependences = t1.id
← →
Alx2 © (2005-01-24 15:15) [3]Вдогонку: distinct работать отказывается, так как присутствуют MEMO-поля
← →
Stanislav © (2005-01-24 15:22) [4]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
← →
Johnmen © (2005-01-24 15:30) [5]
SELECT Id, WHEN (xxx)>0 THEN 1 ELSE 0
где
FROM Goals t1
xxx естьSLECT COUNT(*) FROM Goals t2 WHERE t2.dependences = t1.id
← →
Alx2 © (2005-01-24 15:42) [6]>Johnmen © (24.01.05 15:30) [5]
Спасибо! Все получилось отлично.
Страницы: 1 вся ветка
Текущий архив: 2005.02.20;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.037 c