将这些查询组合成一个多表连接
Posted
技术标签:
【中文标题】将这些查询组合成一个多表连接【英文标题】:Combining these queries into a multi Table Join 【发布时间】:2021-10-08 21:59:34 【问题描述】:我有多个查询,我想将它们组合成一个 9 表连接(可能是个坏主意?)以从表中获取 4 个特定列。但我不确定最好的方法是什么。
我想得到total number of genres watched by each country name.
所以我想要的列是:
name
来自类别表
country
来自国家/地区表
还有一个新创建的列num_rentals integer
https://www.postgresqltutorial.com/postgresql-sample-database/
我不确定我会如何处理这个问题。我是否应该将所有其他表加入 rental
表并执行 groupby/count 以获得该国家/地区的租赁数量?
查看表格后,我发现它们都通过一个属性相互关联...例如城市中的 country_id、地址中的 city_id、客户中的 address_id、出租中的 customer_id
SELECT rental.customer_id FROM rental AS rental;
SELECT country.country FROM country AS country;
SELECT city.country_id FROM city AS city;
SELECT address.city_id FROM address AS address;
SELECT customer.address_id FROM customer AS customer;
最好的方法是什么?
【问题讨论】:
我可以知道您使用哪个工具来创建该图表吗? 嗨,我没有从这个网站 postgresqltutorial.com/postgresql-sample-database 创建图表。我确实知道 lucidchart.com 有一个类似的工具来创建这样的图表 【参考方案1】:你需要类似的东西:
select category.name, country.country, count(*)
from country
join city on country.country_id = city.city_id
join address on address.city_id = city.city_id
join customer on customer.address_id = address.address_id
join rental on rental.customer_id = customer.customer_id
join inventory on inventory.inventory_id = rental.inventory_id
join film on film.film_id = inventory.inventory_id
join film_category on film_category.film_id = film.film_id
join category on category.category_id = film_category.category_id
group by category.name, country.country
【讨论】:
以上是关于将这些查询组合成一个多表连接的主要内容,如果未能解决你的问题,请参考以下文章