вот запрос, который должен выполняться, но в итоге почему-то ноль.
select count(ch1.sernum) from channels ch1, channels ch2
where
ch1.dcid = ch2.dcid and
ch1.objid = ch2.objid and
ch1.devid = ch2.devid and
ch1.joinid = ch2.joinid and
ch1.chanid = ch2.chanid and
ch1.meter<>ch2.meter and
ch1.sernum<>ch2.sernum
Количество неравных данных
Структура таблиц, пример данных в этих таблицах, какой сервер, какой результат этого запроса?
Oracle. Имеется одна таблица с первичными ключами dcid, objid, devid, joinid, chanid и внешними ключами meter, sernum и еще несколькими. Необходимо найти количество записей, если есть одинаковые, не считать их два раза. Одинаковые - это те, у которых равны meter и sernum.Yurich писал(а):Структура таблиц, пример данных в этих таблицах, какой сервер, какой результат этого запроса?
Я составила запрос:
select count(ch1.sernum) from channels ch1, channels ch2
where
ch1.dcid = ch2.dcid and
ch1.objid = ch2.objid and
ch1.devid = ch2.devid and
ch1.joinid = ch2.joinid and
ch1.meter<>ch2.meter and
ch1.sernum<>ch2.sernum
выдает порядка 42 записей, хотя удовлетворяющих условию - 11.
Если связать и по chanid, то вообще говорит, что записей нет.
Ну если dcid, objid, devid, joinid, chanid - это первичные ключи, то каждые meter и sernum, соответствующие одинаковым первичным ключам, - естественно также будут равны. Вот потому он 0 и выдает.
Может вам надо нечто подобное?
Может вам надо нечто подобное?
Код: Выделить всё
select count(*) from
(select distinct meter,sernum from channels)
- Игорь Акопян
- Сообщения: 1419
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
natnim, вы сформулируйте точнее что должен делать запрос и ответ наполовину станет понятен
Вывести количество записей из Ch1, которые что?
Вывести количество записей из Ch1, которые что?
Может так?natnim писал(а): Необходимо найти количество записей, если есть одинаковые, не считать их два раза. Одинаковые - это те, у которых равны meter и sernum.
Код: Выделить всё
select count( distinct meter, sernum) from channels