powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / вывод одинаковых записей вместе с дублями
10 сообщений из 10, страница 1 из 1
вывод одинаковых записей вместе с дублями
    #39747501
TsYekaterina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер. Помогите пожалуйста составить запрос.
Имеется таблица с несколькими полями. В одном значения повторяются. Нужно вывести все записи, где это значение повторяется, причем со всеми дублями.
Спасибо.
...
Рейтинг: 0 / 0
вывод одинаковых записей вместе с дублями
    #39747504
TsYekaterina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сделала так
[code]with x as (select tpr, pan, count(*) over (partition by pan) as c ;
from unr) select tpr, pan from x where c > 1[code], но vpf 6.0 не знает такой команды...
...
Рейтинг: 0 / 0
вывод одинаковых записей вместе с дублями
    #39747577
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
вывод одинаковых записей вместе с дублями
    #39748448
TsYekaterina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,

вывести не просто записи, которые повторяются в поле (при order by having выводится просто запись, которая повторяется несколько раз), а вывести эту запись вместе с дублями.
...
Рейтинг: 0 / 0
вывод одинаковых записей вместе с дублями
    #39748623
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А по ссылке пройти не судьба? Там именно ответ на этот вопрос и дан. Разумеется, если у таблицы есть уникальны идентификатор записи.

Ну, грубо, это запрос, который отбирает записи по факту существования хотя бы еще одной записи с тем же реквизитами (exists()), но у которой значение ключевого поля (Primary Key, если так будет понятнее) отлично от значения текущей записи. Не подсчет общего количества, а просто факт наличия хотя бы еще одной. А то, что это будет "другая" запись как раз и определяется по ключевому полю

Если у таблицы нет уникального идентификатора записи (это грубейшее нарушение структуры данных, но в старых базах так делали), то придется делать через 2 запроса. Сначала найти дубли через Having, потом используя результат этого запроса искать сами записи.
...
Рейтинг: 0 / 0
вывод одинаковых записей вместе с дублями
    #39748773
TsYekaterina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМЕсли у таблицы нет уникального идентификатора записи (это грубейшее нарушение структуры данных, но в старых базах так делали), то придется делать через 2 запроса. Сначала найти дубли через Having, потом используя результат этого запроса искать сами записи.

вот именно это мне и надо! спасибо!
...
Рейтинг: 0 / 0
вывод одинаковых записей вместе с дублями
    #39748788
TsYekaterina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,

можно я Вас еще спрошу?
сделала так:
Код: sql
1.
SELECT * FROM unr WHERE tpr IN (select tpr from unr group by tpr having count(tpr)>1 )

, все получилось.
как вывести из этого следующее:
если хотя бы у одной из повторяющейся записи в поле pan есть A, то не выводить эту запись вообще (вместе с дублями)?
...
Рейтинг: 0 / 0
вывод одинаковых записей вместе с дублями
    #39748854
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подсчитать количество записей, у которых в поле pan есть А. Отобрать только те группы, где это количество равно нулю

Но поскольку в рамках count() такой функциональности нет, то вопрос подсчета решается через sum(iif(...)). Примерно так

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT * FROM unr ;
WHERE tpr IN (select tpr ;
			from unr ;
			group by tpr ;
			having count(tpr)>1 ;
				and sum(iif(pan like '*A*', 1, 0) = 0) ;
			)
...
Рейтинг: 0 / 0
вывод одинаковых записей вместе с дублями
    #39748859
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скобки не там поставил и немного с синтаксисом напутал

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT * FROM unr ;
WHERE tpr IN (select tpr ;
			from unr ;
			group by tpr ;
			having count(tpr)>1 ;
				and sum(iif(pan like '%A%', 1, 0)) = 0 ;
			)



В FoxPro внутри команды SQL можно использовать нативные функции FoxPro. В частности, функцию Like() у которой как раз звездочки вместо процентов ставятся. Вот и перепутал

Т.е. можно еще так

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT * FROM unr ;
WHERE tpr IN (select tpr ;
			from unr ;
			group by tpr ;
			having count(tpr)>1 ;
				and sum(iif(like('*A*',pan), 1, 0)) = 0 ;
			)
...
Рейтинг: 0 / 0
вывод одинаковых записей вместе с дублями
    #39748870
TsYekaterina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,

Большое Вам спасибо!!!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / вывод одинаковых записей вместе с дублями
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]