:: Visual Foxpro, Foxpro for DOS
SQL-поиск по 2 полям одновременно
meta1

Сообщений: 3
Дата регистрации: 15.07.2022
Всем привет. Столкнулся с такой проблемой. Надо найти по базе двойников
По 1 полю ищет без проблем ,а мне надо поиск одновременно по двум. Как правильно прописать. Спасибо

По 1 полю ZMIST ищет без проблем
как вставить поиск одновременно по двум полям ZMIST, VIK

SELECT CONTR.ZMIST,CONTR.VIK FROM CONTR WHERE CONTR.ZMIST IN(SELECT CONTR.ZMIST FROM CONTR GROUP BY CONTR.ZMIST HAVING COUNT(CONTR.ZMIST)>1) ORDER BY CONTR.zmist INTO CURS d4
Ratings: 0 negative/0 positive
Re: SQL-поиск по 2 полям одновременно
leonid

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
Это чтоли в смысле такое надо?
select zmist, vik from contr group by zmist, vik having count(*) > 1
Ratings: 0 negative/0 positive
Re: SQL-поиск по 2 полям одновременно
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> По 1 полю ищет без проблем ,а мне надо поиск одновременно по двум.

Как принцип - сконструируй синтетическое поле (например "ФАМ+ИМЯ" при поиске "по двум полям"), и по нему и группируй, и делай по этому синтетическому полю GROUP и HAVING...
Ratings: 0 negative/0 positive
Re: SQL-поиск по 2 полям одновременно
meta1

Сообщений: 3
Дата регистрации: 15.07.2022
leonid
Это чтоли в смысле такое надо?
select zmist, vik from contr group by zmist, vik having count(*) > 1

select n_ree,n_nadh,adresat,conv_date,zmist,vik,contr from contr group by zmist,vik,contr having count(*) > 1 into tabl d5


не работает : видает в список 1 запись с 2
Ratings: 0 negative/0 positive
Re: SQL-поиск по 2 полям одновременно
meta1

Сообщений: 3
Дата регистрации: 15.07.2022
of63
> По 1 полю ищет без проблем ,а мне надо поиск одновременно по двум.
Как принцип - сконструируй синтетическое поле (например "ФАМ+ИМЯ" при поиске "по двум полям"), и по нему и группируй, и делай по этому синтетическому полю GROUP и HAVING...

... так получается
Ratings: 0 negative/0 positive
Re: SQL-поиск по 2 полям одновременно
Владимир Максимов
Автор

Сообщений: 14100
Откуда: Москва
Дата регистрации: 02.09.2000
Не надо придумывать искусственные конструкции в SQL-запросах. Сделать-то можно, но как потом вносить изменения будешь? Это каждый раз по часу будешь вспоминать, что же тут написано-то?

Делай "в лоб". 2 запроса подряд. Сначала дубли по паре, потом через Exists или Inner Join объединяй с выборкой. Не надо всякие составные ключи делать



select
zmist,
vik,
contr
from contr
into curDoubl
group by
zmist,
vik,
contr
having count(*) > 1
select n_ree,n_nadh,adresat,conv_date,zmist,vik,contr
from contr
where exists(select 'x'
from curDoubl
where
curDoubl.zmist = contr.zmist
and curDoubl.vik = contr.vik
and curDoubl.contr = contr.contr
)

В принципе, если объединять через Inner Join, то можно группировку в подзапросе оформить. Но не уверен, что VFP такой запрос будет поддерживать. В SQL это примерно так делается

select n_ree,n_nadh,adresat,conv_date,zmist,vik,contr
from contr
inner join
(select
zmist,
vik,
contr
from contr as contr2
group by
zmist,
vik,
contr
having count(*) > 1
) as curDouble
on curDoubl.zmist = contr.zmist
and curDoubl.vik = contr.vik
and curDoubl.contr = contr.contr
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 28 (Гостей: 28)

© 2000-2024 Fox Club 
Яндекс.Метрика