Похожие чаты

Подскажите, как тут получить не поля, а количество записей? query =

(
select(
Advice.id,
Advice.dt,
Advice.with_recommendations,
AdvicePurposeVariety,
AdvicingAlgorithmVariety,
AdvicePurposeVariety,
AdviceReactionVariety,
EventVariety.name,
)
.distinct(Advice.id)
.where(and_(*filters_to_apply))
.outerjoin(AdvicePurposeVariety)
.outerjoin(AdviceReaction)
.outerjoin(AdviceReactionVariety)
.outerjoin(AdviceContext)
.outerjoin(AdvicingAlgorithmVariety)
.outerjoin(AdviceEvent)
.outerjoin(Event)
.outerjoin(EventVariety)
)
Такой вариант даёт ошибку
query = (
select(
func.count()
)
.distinct(Advice.id)
.where(and_(*filters_to_apply))
.outerjoin(AdvicePurposeVariety)
.outerjoin(AdviceReaction)
.outerjoin(AdviceReactionVariety)
.outerjoin(AdviceContext)
.outerjoin(AdvicingAlgorithmVariety)
.outerjoin(AdviceEvent)
.outerjoin(Event)
.outerjoin(EventVariety)
)
В первом запросе sql такой:
SELECT
DISTINCT ON (technological_section_1.advices.id) technological_section_1.advices.id,
....
Что бы получить кол-во надо, что бы было так
SELECT
count(DISTINCT technological_section_1.advices.id)
...

14 ответов

10 просмотров

там нужно делать select_from

Ilya Lyapin (Nestyreff)
там нужно делать select_from

так? query = ( select(func.count()).select_from() .distinct(Advice.id) .where(and_(*filters_to_apply)) .outerjoin(AdvicePurposeVariety) .outerjoin(AdviceReaction) .outerjoin(AdviceReactionVariety) .outerjoin(AdviceContext) .outerjoin(AdvicingAlgorithmVariety) .outerjoin(AdviceEvent) .outerjoin(Event) .outerjoin(EventVariety) )

Tishka17
ну укажи из чего селектить

query = ( select(func.count()).select_from( select() .distinct(Advice.id) .where(and_(*filters_to_apply)) .outerjoin(AdvicePurposeVariety) .outerjoin(AdviceReaction) .outerjoin(AdviceReactionVariety) .outerjoin(AdviceContext) .outerjoin(AdvicingAlgorithmVariety) .outerjoin(AdviceEvent) .outerjoin(Event) .outerjoin(EventVariety) ) ) Вроде так, по идеи, но тоже ошибка

Александр Виноградов
query = ( select(func.count()).select_from( ...

select_from(…) в скобках то что у тебя было в этом запросе: select( Advice.id, Advice.dt, Advice.with_recommendations, AdvicePurposeVariety, AdvicingAlgorithmVariety, AdvicePurposeVariety, AdviceReactionVariety, EventVariety.name, )

Tishka17
на SQL как пишется селект?

SELECT count(DISTINCT technological_section_1.advices.id) FROM technological_section_1.advices -- LEFT OUTER JOIN common.advice_purpose_varieties ON common.advice_purpose_varieties.id = technological_section_1.advices.purpose_variety_id LEFT OUTER JOIN technological_section_1.advice_reactions ON technological_section_1.advices.id = technological_section_1.advice_reactions.advice_id -- LEFT OUTER JOIN common.advice_reaction_varieties ON common.advice_reaction_varieties.id = technological_section_1.advice_reactions.variety_id LEFT OUTER JOIN technological_section_1.advice_contexts ON technological_section_1.advices.id = technological_section_1.advice_contexts.advice_id -- LEFT OUTER JOIN common.advising_algorithm_varieties ON common.advising_algorithm_varieties.id = technological_section_1.advice_contexts.advising_algorithm_variety_id LEFT OUTER JOIN technological_section_1.advice_events ON technological_section_1.advices.id = technological_section_1.advice_events.advice_id LEFT OUTER JOIN technological_section_1.events ON technological_section_1.events.id = technological_section_1.advice_events.event_id LEFT OUTER JOIN common.event_varieties ON common.event_varieties.id = technological_section_1.events.variety_id WHERE technological_section_1.advices.dt >= '2023-05-05 00:00:00' AND technological_section_1.advices.dt <= '2023-05-06 00:00:00' AND technological_section_1.advices.purpose_variety_id = 1 AND technological_section_1.advice_reactions.variety_id = 1 AND technological_section_1.advice_contexts.advising_algorithm_variety_id = 1 AND technological_section_1.advices.with_recommendations = true

Александр Виноградов
SELECT count(DISTINCT technological_section_1.advi...

вон from видишь =) его и передавай в select_from

Tishka17
вон from видишь =) его и передавай в select_from

query = ( select(func.count()).select_from( select(distinct(Advice.id)) .where(and_(*filters_to_apply)) .outerjoin(AdvicePurposeVariety) .outerjoin(AdviceReaction) .outerjoin(AdviceReactionVariety) .outerjoin(AdviceContext) .outerjoin(AdvicingAlgorithmVariety) .outerjoin(AdviceEvent) .outerjoin(Event) .outerjoin(EventVariety) ) ) Вот как надо, т.е. в селект вставить distinct(Advice.id)

Александр Виноградов
query = ( select(func.count())...

это работает несколько не так как исходный запрос

Tishka17
это работает несколько не так как исходный запрос

это создаёт вот такой запрос SELECT count(*) AS count_1 FROM ( SELECT DISTINCT technological_section_1.advices.id AS anon_2 FROM technological_section_1.advices LEFT OUTER JOIN common.advice_purpose_varieties ON common.advice_purpose_varieties.id = technological_section_1.advices.purpose_variety_id LEFT OUTER JOIN technological_section_1.advice_reactions ON technological_section_1.advices.id = technological_section_1.advice_reactions.advice_id LEFT OUTER JOIN common.advice_reaction_varieties ON common.advice_reaction_varieties.id = technological_section_1.advice_reactions.variety_id LEFT OUTER JOIN technological_section_1.advice_contexts ON technological_section_1.advices.id = technological_section_1.advice_contexts.advice_id LEFT OUTER JOIN common.advising_algorithm_varieties ON common.advising_algorithm_varieties.id = technological_section_1.advice_contexts.advising_algorithm_variety_id LEFT OUTER JOIN technological_section_1.advice_events ON technological_section_1.advices.id = technological_section_1.advice_events.advice_id LEFT OUTER JOIN technological_section_1.events ON technological_section_1.events.id = technological_section_1.advice_events.event_id LEFT OUTER JOIN common.event_varieties ON common.event_varieties.id = technological_section_1.events.variety_id ) AS anon_1

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

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

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
35
30 BCH videos in Hausa Language successfully delivered. In December 2023, I created a Flipstarter to produce Bitcoin Cash videos in the Hausa language for greater outreach an...
Munnir
5
How to create an OS in C? what to study?
Linus
18
читать файл максимально быстро? странный вопрос))
zamtmn
53
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
братва! где куличи брать?
Alöscha
25
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Посоветуйте пожалуйста аудио плеер для библиотеки mp3- FLAC на компьютере. На Винде пользовался Aimp, в том числе для конвертации. Много нужных команд было прямо в контекст...
Виктор Кузнецов
31
@HemulGM Параметры у AddStream поменялись? Несостыковка какая-то
Катерина Свиридова
12
📢Join the FUNToken X Pamtoken Zealy Campaign - Let the Quest Begin!🔥 📢Attention, FUNToken Community! We're excited to announce the launch of our Zealy Campaign in collaborat...
OJohnny
7
Карта сайта