Mysql 用四个表查询SQL
有人能告诉我如何查询这些表格,以获得每个国家公司的员工人数吗?结果列的数量应为3,公司、国家和员工。公司和分公司是相连的,但国家和城市是相连的,所以我不知道如何解决这个问题。谢谢大家,谢谢Mysql 用四个表查询SQL,mysql,sql,database,Mysql,Sql,Database,有人能告诉我如何查询这些表格,以获得每个国家公司的员工人数吗?结果列的数量应为3,公司、国家和员工。公司和分公司是相连的,但国家和城市是相连的,所以我不知道如何解决这个问题。谢谢大家,谢谢 CREATE TABLE country ( id integer NOT NULL PRIMARY KEY, name varchar NOT NULL, population integer check(population > 0) ); CREATE T
CREATE TABLE country (
id integer NOT NULL PRIMARY KEY,
name varchar NOT NULL,
population integer check(population > 0)
);
CREATE TABLE city (
id integer NOT NULL PRIMARY KEY,
name varchar NOT NULL,
population integer check(population > 0),
country integer NOT NULL REFERENCES country(id)
);
CREATE TABLE company (
id integer NOT NULL PRIMARY KEY,
name varchar NOT NULL
);
CREATE TABLE branch (
company integer NOT NULL REFERENCES company(id),
city integer NOT NULL REFERENCES city(id),
name varchar,
employees integer NOT NULL,
PRIMARY KEY (company, city)
);
这就是我所做的,但我知道这是错误的,我尝试了我的组合,但到目前为止没有一个是正确的
SELECT
branch.employees,
company.name AS company,
country.name AS country
FROM branch
INNER JOIN company
ON branch.company = company.id
INNER JOIN country
ON city.country = country.id
ORDER BY country;
您需要计算每个公司在其工作的国家/地区的员工总数。这意味着您必须按
这两个字段分组,同时计算每个分支机构的员工人数。您还需要使用城市表,即使不显示其中的任何数据
阅读聚合函数以了解更多背景信息。了解sql中的连接。处理困难的连接时,我总是从简单的连接开始。记下一个(比如说分支机构和公司),然后再加上更多。如果你想得到雇员的数量,你还需要使用sum函数,通过关键字与group一起你几乎得到了它,需要先加入city表,然后才能使用它。谢谢!我尝试了很多在线资源,但大多数都是基础资源…这解释了很多。非常感谢!
SELECT
company.name AS company,
country.name AS country,
sum(branch.employees) AS country_employees
FROM branch
JOIN company ON company.id = branch.company
JOIN city ON city.id = branch.city
JOIN country ON country.id = city.country
GROUP BY company.name, country.name
ORDER BY country.name, company.name;