Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Поиск дублей по сравнению с временной таблицей  [new]
*Ann*
Member

Откуда:
Сообщений: 94
Добрый день.
Подскажите, пожалуйста, в решении такой задачи:
Есть запрос, который ищет адреса с дублирующими координатами:

with double_coo_id as
( select id from public.house_coordinates,
(select count(hc.id) cnt, hc.latitude lat, hc.longitude long
 from public.house_coordinates hc
group by hc.latitude, hc.longitude
having count(hc.id) > 3) doubles_coo
 where 1=1
 and latitude = doubles_coo.lat and longitude = doubles_coo.long
)     

select eah.orponid, eah.adr_adm_ter, dci.*
from public.ent_as_house eah, double_coo_id dci
where 1=1
and livestatus = 1
and parent_id is not null
and coordinates_id = dci.id
;

И есть временная таблица:
CREATE TABLE #tmpCities
(Nomer INT,
City_name VARCHAR(50),
Count_people int);

INSERT INTO #tmpCities
VALUES (1, 'Москва г', 12506),
(2, 'Санкт-Петербург г', 5352),
(3, 'Новосибирск г', 1613),
(4, 'Екатеринбург г', 1469),
(5, 'Нижний Новгород г', 1259),
(6, 'Казань г', 1244);


Подскажите, пожалуйста, как в первый запрос добавить условие выбора только тех адресов, которые содержат в поле eah.adr_adm_ter значение tmpCities.City_name, то есть условие eah.adr_adm_ter like ’% tmpCities.City_name %’ и отсортировать полученные записи по полю tmpCities.Nomer

Сообщение было отредактировано: 21 мар 19, 12:44
21 мар 19, 12:07    [21839405]     Ответить | Цитировать Сообщить модератору
 Re: Поиск дублей по сравнению с временной таблицей  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2979
*Ann*,

with double_coo_id as( 
	select 
		c.id 
	from 
		public.house_coordinates c,
		(select count(hc.id) cnt, hc.latitude lat, hc.longitude long from public.house_coordinates hc group by hc.latitude, hc.longitude having count(hc.id) > 3) doubles_coo
	where 
		1=1
		and c.latitude = doubles_coo.lat 
		and c.longitude = doubles_coo.long
) 
select 
	eah.orponid
	, eah.adr_adm_ter
	, dci.*
from 
	public.ent_as_house eah
	, double_coo_id dci
	, #tmpCities tc 
where 
	1=1
	and eah.livestatus = 1
	and eah.parent_id is not null
	and eah.coordinates_id = dci.id
	and eah.adr_adm_ter like '%' + tc.City_name + '%'
order by
	ct.Nomer 
;


ЗЫЖ
1.не забывайте алиасы
2. может лучше заменить запятые на inner join ?
21 мар 19, 12:35    [21839439]     Ответить | Цитировать Сообщить модератору
 Re: Поиск дублей по сравнению с временной таблицей  [new]
*Ann*
Member

Откуда:
Сообщений: 94
HandKot,
Спасибо за помощь. Можете подсказать как "+" заменить в postgresql? Выдаётся ошибка operator does not exist
21 мар 19, 12:48    [21839455]     Ответить | Цитировать Сообщить модератору
 Re: Поиск дублей по сравнению с временной таблицей  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7754
*Ann*,
Вы ошиблись форумом.
21 мар 19, 12:51    [21839461]     Ответить | Цитировать Сообщить модератору
 Re: Поиск дублей по сравнению с временной таблицей  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1467
*Ann*
HandKot,
Спасибо за помощь. Можете подсказать как "+" заменить в postgresql? Выдаётся ошибка operator does not exist

если вы про оператор строковой конкатенации, то в PG для этого используется такая конструкция: ||
21 мар 19, 13:00    [21839477]     Ответить | Цитировать Сообщить модератору
 Re: Поиск дублей по сравнению с временной таблицей  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1467
*Ann*,

ну или используйте АНСи-ориентированный CONCAT:
Select CONCAT ('п','р','и','м','е','р')
21 мар 19, 13:03    [21839480]     Ответить | Цитировать Сообщить модератору
 Re: Поиск дублей по сравнению с временной таблицей  [new]
*Ann*
Member

Откуда:
Сообщений: 94
Щукина Анна,

Спасибо, про конструкцию || забыла. Все получилось.
27 мар 19, 06:29    [21844464]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить