-
Нужно выбрать строки таблицы А, в которых совпадают значения поля F2,но разные значения поля F1. Пример: F1 | F2 ----------- 100 | 200 112 | 200
-
select F1, F2, count(F2) from A order by F2 group by F2 having count(F2) > 1
-
select f2,count(*) from table group by f2 having count(*)>1
-
а как быть с записями, у которых равны и f1 и f2? Их выбирать не нужно.
-
select ..from .. where F1<>F2 .. и т.д.
-
Не значения полей между собой, а значения полей в разных записях. f1 в одной записи равно f1 - в другой. Такие строки не выбираются.
-
Т.е. значения f2 в разных записях равны, а значения f1 - нет. Например: 111 Вася 222 Вася ------------ Такие выбираем
А такие-нет: 444 Петя 444 Петя
-
см. по аналогии с [1] по полю F1 добавляешь сч-к, группировку и доп.условие отбора по сч-ку в HAVING-выражении
-
select
a.tin,a.c_sti_main, a.adr_ns, b.d_reg_sti, count(a.adr_ns), count(a.tin)
from r21paddr a, r21taxpay b
where a.tin=b.tin
group by a.tin,a.adr_ns,a.c_sti_main,b.d_reg_sti
having count(a.adr_ns)>1 and count(a.tin)=1 Вернул 0 строк :((
-
select F1, F2, count(F2), count(F1) from A group by F2, F1 having count(F2)>1 and count(F1)=1
-
select a.tin,a.c_sti_main, a.adr_ns,b.d_reg_sti,count(a.adr_ns),count(a.tin)
from r21paddr a,r21taxpay b
where a.tin=b.tin
group by a.adr_ns,a.tin,a.c_sti_main,b.d_reg_sti
having count(a.adr_ns)>1 and count(a.tin)=1
та же петрушка... 0 строк
-
А если из версии [10] убрать and count(a.tin)=1 то тоже 0 ?
-
Это в смысле "а был ли мальчик?":) Нет, не 0.
-
> не 0. >
А что видишь ?
Приведи фрагмент реального набора и выдели строки, которые не должны были в него попасть
-
И СУБД какая ?
-
TIN ADR_NS D_REG_CSTI ----------------------------------------------------------------- 25810001 ул. Кирова....... 28.01.2002 25810001 ул. Кирова...... 01.05.2004
Эти строки не должны были попасть в выборку, т.к. TIN одинаковый.
-
> в которых совпадают значения поля F2,но разные значения поля F1. > Пример: > F1 | F2 > ----------- > 100 | 200 > 112 | 200 SELECT DISTINCT F1, F2 FROM Table WHERE F2=200
-
ORACLE 9i Запрос набираю в Нафигаторе.
-
> rebroff (12.03.08 14:43) [15]
А где в этом фрагменте поля счетчиков ?
-
TIN ADR_NS D_REG_CSTI COUNT(a.adr_ns) COUNT(a.tin)---------------------------------------------------------------------------- 25810001 ул. Кирова....... 28.01.2002 48 48 25810001 ул. Кирова...... 01.05.2004 12 12
-
И это соответствует действительности ?
-
Нет, на самом деле таких записей - 14.
-
> rebroff (12.03.08 14:43) [15] > Эти строки не должны были попасть в выборку, > т.к. TIN одинаковый.
По какому критерию определяется попадающая строка?
-
> на самом деле таких записей - 14.
Каких "таких" ?
Я о сравнении рез-тов группирующего запроса с результатами "обычного" ..
-
Какая из используемых таблиц имеет первичное ключевое поле ?
|