Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
*Ann* Member Откуда: Сообщений: 101 |
Добрый день. Подскажите, пожалуйста, в решении такой задачи: Есть запрос, который ищет адреса с дублирующими координатами: 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] Ответить | Цитировать Сообщить модератору |
HandKot Member Откуда: Sergiev Posad Сообщений: 3015 |
*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] Ответить | Цитировать Сообщить модератору |
*Ann* Member Откуда: Сообщений: 101 |
HandKot, Спасибо за помощь. Можете подсказать как "+" заменить в postgresql? Выдаётся ошибка operator does not exist |
21 мар 19, 12:48 [21839455] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8316 |
*Ann*, Вы ошиблись форумом. |
21 мар 19, 12:51 [21839461] Ответить | Цитировать Сообщить модератору |
Щукина Анна Member Откуда: Сообщений: 1507 |
если вы про оператор строковой конкатенации, то в PG для этого используется такая конструкция: || |
||
21 мар 19, 13:00 [21839477] Ответить | Цитировать Сообщить модератору |
Щукина Анна Member Откуда: Сообщений: 1507 |
*Ann*, ну или используйте АНСи-ориентированный CONCAT: Select CONCAT ('п','р','и','м','е','р') |
21 мар 19, 13:03 [21839480] Ответить | Цитировать Сообщить модератору |
*Ann* Member Откуда: Сообщений: 101 |
Щукина Анна, Спасибо, про конструкцию || забыла. Все получилось. |
27 мар 19, 06:29 [21844464] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |