170 похожих чатов

Здравстуйте. Как такой запрос написать в jooq? select * from entity e where e.entity_id

in (select ef.entity_id
from entity_filter ef
inner join filter f on f.filter_id = ef.filter_id
WHERE ((f.filter_name='somefilter' AND ef.filter_value='somefiltervalue') OR
(f.filter_name='somefilter2' AND ef.filter_value='somefiltervalue2'))
group by ef.entity_id
HAVING COUNT(*) >= 2 -- number of matching attributes required
);

количество фильтров в where части меняются динамически ,и поэтому не понимаю как это можно написать. Сами полученные фильтры лежат в мапе. Есть идея только написать ручками генератор sql на основе мапы ,и впихнуть в where часть. Есть ли другие пути?

9 ответов

12 просмотров

ну так они склеиваються, через and или or

Cavidan-Shestakov Автор вопроса
Bohdan Panchenko
ну так они склеиваються, через and или or

самих фильтров может быть 50+. То есть статически написать в коде не получится. То есть может быть и такая ситуация: ... WHERE ((f.filter_name='somefilter' AND ef.filter_value='somefiltervalue') OR (f.filter_name='somefilter2' AND ef.filter_value='somefiltervalue2') OR (f.filter_name='somefilter3' AND ef.filter_value='somefiltervalue3') OR (f.filter_name='somefilter4' AND ef.filter_value='somefiltervalue4') ) group by ef.entity_id HAVING COUNT(*)>=4

Cavidan Shestakov
самих фильтров может быть 50+. То есть статически ...

а я где я сказал что их стптически написать ?

Cavidan-Shestakov Автор вопроса
Bohdan Panchenko
или у вас условия в текстовом виде ?

фильтры описаны в схеме graphql. Некоторые фильтры могут быть null ,и поэтому было принято достать не нулл фильтры через рефлекшн и запихнуть в мапу Map<String,String> где ключ это название фильтра

Cavidan Shestakov
фильтры описаны в схеме graphql. Некоторые фильтры...

а в Мапе нужно использовать все фильтры или выборочно ?

https://www.jooq.org/doc/3.2/manual/sql-building/dynamic-sql/

Dima
https://www.jooq.org/doc/3.2/manual/sql-building/d...

слишком рано, нужно еще полгодика хоятб

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта