Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите написать запрос / 15 сообщений из 15, страница 1 из 1
21.09.2021, 13:58
    #40098986
Pitrovich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
Ситуация такая.
Есть набор данных (строка) - v1, v2, v3, v4. Прилетает извне в скрипт пачками. В пачке по 10-20-30 штук.
Раньше вставлял просто:
insert into shm.table1 (val1,val2,val3,val4) values (v1, v2, v3, v4),(v1, v2, v3, v4),(v1, v2, v3, v4)

Сейчас задача усложнилась, и мне нужно вставить в table1, только те строки, у которых v1 присутствует в table2, а v2 присутствует в table3.

Как можно реализовать такой запрос?
...
Рейтинг: 0 / 0
21.09.2021, 14:45
    #40099006
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
Pitrovich,

Код: sql
1.
2.
3.
4.
5.
6.
insert into shm.table1 (val1,val2,val3,val4) 
select * from (
values (v1, v2, v3, v4),(v1, v2, v3, v4),(v1, v2, v3, v4)
) as data(v1,v2,v3,v4)
where exists (select from table2 t2 where t2.column = v1)
and exists (select from table3 t3 where t3.column = v2)
...
Рейтинг: 0 / 0
21.09.2021, 15:05
    #40099015
Pitrovich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
Melkij,
Спасибо, мил человек!
Как просто оказалось - as data и все, а я никак не мог найти как это сделать.
...
Рейтинг: 0 / 0
29.09.2021, 15:11
    #40100698
localhost8080
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
Добрый день.
Есть две таблицы в которых одна колонка содержит "https://domen.ru/p/n9s8hxPS4yaEC6n9R?hash=e51eb546-d364-48b7-9784-201e09062e49" ссылки вот такого плана
вторая таблица содержит тектовую колонку с таким содержимым "n9s8hxPS4yaEC6n9R"
нужно найти все id записей из первой таблицы,к которых не будет совпадать выделенное красным
тоесть грубо говоря каждую запись из первой таблицы нужно проверить на соотвествие всем записям из второй таблицы и если соотвествий нет - выдать id этой записи

"
...
Рейтинг: 0 / 0
29.09.2021, 15:36
    #40100711
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
localhost8080,

[not exists | left join]+ like
...
Рейтинг: 0 / 0
29.09.2021, 15:44
    #40100712
localhost8080
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
Щукина Анна
localhost8080,

[not exists | left join]+ like

Если не затруднит как выглядит целиком запрос - я не очень понимаю эту конструкцию,заранее спасибо
...
Рейтинг: 0 / 0
29.09.2021, 16:10
    #40100717
localhost8080
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
Щукина Анна
localhost8080,

[not exists | left join]+ like


Код: plsql
1.
2.
select id  from links
where not   exists(select l.id from links l left join mongo_link ml  on l.link  like concat( '%',mongo_id,'%'));


попробовал вот так,запрос не работает
...
Рейтинг: 0 / 0
29.09.2021, 16:14
    #40100719
localhost8080
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
Щукина Анна
localhost8080,

[not exists | left join]+ like


left join не подходит,нужно обычный join
...
Рейтинг: 0 / 0
29.09.2021, 16:17
    #40100722
localhost8080
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
not exists тоже не работает

финальный вид запроса вот такой

Код: java
1.
2.
select id  from links
where id not   in (select l.id from links l join mongo_link ml  on l.link  like concat( '%',mongo_id,'%'));
...
Рейтинг: 0 / 0
30.09.2021, 04:31
    #40100851
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
localhost8080
попробовал вот так,запрос не работает
...
left join не подходит, нужно обычный join
"Ох уж эти сказочки, ох уж эти сказочники"(с)

Всем подходит, у всех работает, а ему - не подходит, не работает...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
--
-- Форма запроса на NOT EXISTS:
with
--
-- Тестовые данные первой таблицы:
  links (id, link) as 
    (
      values (1, 'https://bla-bla-bla/template1/bla-bla')
           , (2, 'https://bla-bla-bla/template2/bla-bla')
           , (3, 'https://bla-bla-bla/template3/bla-bla')
           , (4, 'https://bla-bla-bla/template4/bla-bla')
           , (5, 'https://bla-bla-bla/template5/bla-bla')
    )
--
-- Тестовые данные второй таблицы:
, mongo_link (mongo_id) as
    (
      values ('template1')
           , ('template3')
           , ('template5')
    )
--
-- Основной запрос:
select id 
  from links l
 where not exists 
         (
           select null 
             from mongo_link ml 
            where l.link like concat('%', mongo_id, '%')
         );



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
--
-- Форма запроса на LEFT JOIN:
with
--
-- Тестовые данные первой таблицы:
  links (id, link) as 
    (
      values (1, 'https://bla-bla-bla/template1/bla-bla')
           , (2, 'https://bla-bla-bla/template2/bla-bla')
           , (3, 'https://bla-bla-bla/template3/bla-bla')
           , (4, 'https://bla-bla-bla/template4/bla-bla')
           , (5, 'https://bla-bla-bla/template5/bla-bla')
    )
--
-- Тестовые данные второй таблицы:
, mongo_link (mongo_id) as
    (
      values ('template1')
           , ('template3')
           , ('template5')
    )
--
-- Основной запрос:
select l.id 
  from links l
  left join mongo_link ml 
    on l.link like concat('%', mongo_id, '%')
 where ml.mongo_id is null;
...
Рейтинг: 0 / 0
30.09.2021, 07:23
    #40100859
Помогите написать запрос
localhost8080
Есть две таблицы в которых одна колонка содержит "https://domen.ru/p/n9s8hxPS4yaEC6n9R?hash=e51eb546-d364-48b7-9784-201e09062e49" ссылки вот такого плана

что за дичь
ну вы хотя бы вытащите в отдельную колонку свой n9s8hxPS4yaEC6n9R и ищите по нему запросто
...
Рейтинг: 0 / 0
30.09.2021, 08:34
    #40100867
localhost8080
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
бабушкин зайчик

что за дичь
ну вы хотя бы вытащите в отдельную колонку свой n9s8hxPS4yaEC6n9R и ищите по нему запросто

Согласен что дичь.
c удовольствием бы вытащил -как это сделать подскажите если не сложно,так как я попробовал различные регулярки и у меня ничего не вышло
...
Рейтинг: 0 / 0
30.09.2021, 10:10
    #40100886
localhost8080
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
Ну и еще вопрос - в первой таблице где ссылки там 90 млн записей,во второй таблице где ключи- там 70 тысяч записей

Нужен запрос такого плана ,чтобы его выполенение не заняло ближайший месяц

в данный момент вешаю индекс на ссылки из первой таблицы и ключи из второй

сам индекс выглядит вот так
Код: plsql
1.
CREATE INDEX link_gin ON links USING gin (link gin_trgm_ops);
...
Рейтинг: 0 / 0
30.09.2021, 13:07
    #40100945
Помогите написать запрос
localhost8080
как это сделать подскажите

да хоть бы и вот так:
Код: php
1.
/\/(\w+?)\?hash/


localhost8080
в данный момент вешаю индекс на ссылки из первой таблицы и ключи из второй

на ссылки? вот на это всё индекс??
авторhttps://domen.ru/p/n9s8hxPS4yaEC6n9R?hash=e51eb546-d364-48b7-9784-201e09062e49
где этот смайлик падающий в обморок...
да и какой от такого индекса толк вообще
...
Рейтинг: 0 / 0
30.09.2021, 15:41
    #40101009
localhost8080
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
бабушкин зайчик
localhost8080
как это сделать подскажите

да хоть бы и вот так:
Код: php
1.
/\/(\w+?)\?hash/


localhost8080
в данный момент вешаю индекс на ссылки из первой таблицы и ключи из второй

на ссылки? вот на это всё индекс??
авторhttps://domen.ru/p/n9s8hxPS4yaEC6n9R?hash=e51eb546-d364-48b7-9784-201e09062e49

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


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