![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с SQL [D5, Paradox, ]
vvvic © (2001-12-10 09:01:00)Начал изучать SQL и возникла проблема. Как написать запрос вытаскивающий из БД(Paradox) все дублирующиеся по четырём полям записи. Заранее спасибо!
vvvic (2001-12-10 12:26:00) [1]Огромное блогадарю!
В count-е убрал псевдоним и заработало!
Mick (2001-12-10 12:06:00) [2]Вот LocalSQL запрос, 100% работающий на Paradox
Select * from MyTable A
Where EXISTS
(Select B.F1,B.F2,B.F3,B.F4, Count(*) From MyTable B
Where B.F1 = A.F1 and B.F2 = A.F2 and B.F3 = A.F3 and B.F4 = A.F4
Group By B.F1,B.F2,B.F3,B.F4 HAVING Count(*) > 1)
vvvic (2001-12-10 11:55:00) [3]> Mick
Пишу следующее:
select p.name, p.surname, p.pathname, p.datebirth, p.seria, p.number
from police p
where exists
(select u.name, u.surname, u.pathname, u.datebirth, count(u.*)
from police u
where (u.name=p.name) and (u.surname=p.surname ) and
(u.pathname=p.pathname) and (u.datebirth=p.datebirth)
Group By u.name, u.surname, u.pathname, u.datebirth Having count(u.*) > 1)
А он мне ошибку Invalid field name!
Хотя поля указаны правильно.
Может что-то не то?
Mick (2001-12-10 11:14:00) [4]Например так
Select * from MyTable A
Where EXISTS
(Select B.F1,B.F2,B.F3,B.F4, Count(B.*) From MyTable B
Where B.F1 = A.F1 and B.F2 = A.F2 and B.F3 = A.F3 and B.F4 = A.F4
Group By B.F1,B.F2,B.F3,B.F3 HAVING Count(B.*) > 1)
vvvic (2001-12-10 10:52:00) [5]Если можно покажите пример
vvvic (2001-12-10 10:52:00) [6]> Mick
Если можно покажите пример
Mick (2001-12-10 10:47:00) [7]В этом случае только связанный подзапрос ...
vvvic (2001-12-10 10:42:00) [8]Спасибо огромное работает!
Но если мне надо вывести 5 полей, а сравнивать на дубликаты по 4?
Mick (2001-12-10 10:36:00) [9]Да, точно. "Having Count(*) > 1"
vvvic (2001-12-10 10:32:00) [10]select name, surname, pathname, datebirth, seria, number, docseria, docnumber,count(*) Quantity from police
Group By name, surname, pathname, datebirth, seria, number, docseria, docnumber
Having Quantity > 1
TaB (2001-12-10 10:32:00) [11]В разных видах SQL - это по разному, попробуй так:
Select f1,f2,f3,f4,count(*) Quantity
From MyTable
Group By f1,f2,f3,f4
Having count(*) > 1
Mick (2001-12-10 10:27:00) [12]Убери запятую перед Quantity
vvvic (2001-12-10 10:26:00) [13]> Mick
Ругается на Quantity говорит Invalid field name
Mick (2001-12-10 10:23:00) [14]Если кроме этих четырех полей в таблице есть только PK, то это именно, то что спрашивал автор.
marat (2001-12-10 10:09:00) [15]Mick - это скорее как обнаружить
есть ли такие записи в таблице
а вот если надо найти именно эти записи тогда наверно надо чуть модифицировать твой запрос
select a.id
from MyTable a
where ....
Mick (2001-12-10 09:19:00) [16]Select f1,f2,f3,f4,count(*) Quantity from MyTable
Group By f1,f2,f3,f4
Having Quantity > 1