Mysql 用四个表查询SQL

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

有人能告诉我如何查询这些表格,以获得每个国家公司的员工人数吗?结果列的数量应为3,公司、国家和员工。公司和分公司是相连的,但国家和城市是相连的,所以我不知道如何解决这个问题。谢谢大家,谢谢

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;