У меня есть следующие items
таблица:Объединяя три таблицы с агрегацией
items:
id pr1 pr2 pr3
-------------------
1 11 22 tt
...
и две таблицы, связанные с деталями:
comments:
item_id text
-------------
1 "cool"
1 "very good"
...
tags:
item_id tag
-------------
1 "life"
1 "drug"
...
Теперь я хочу, чтобы получить таблицу со столбцами item_id, pr1, pr2, count(comments), count(tags)
с условием WHERE pr3 = zz
. Каков наилучший способ получить его? Я могу сделать это, создав дополнительные таблицы, но мне было интересно, есть ли способ достичь этого, используя только один оператор SQL. Я использую Postgres 9.3.
Да, вы ищете внутреннее соединение между ese три таблицы. – SMA
@Saharsh Shah: Я снова удалил тэги. Это не вопрос о левых объединениях и т. Д., А о том, как написать ** SQL **-запрос в ** PostgreSQL **, как правильно отмечено. Да, внешнее соединение таблиц - это одно решение, но не единственное. –
Наиболее эффективный запрос зависит от того, хотите ли вы получить все или большинство элементов одновременно или только небольшой выбор или отдельный элемент. Вы должны уточнить свой вопрос в этом отношении. Добавьте свою версию Postgres, находясь на ней. –