[英]SQL query involving relation between multiple tables. SQlite3
我有这三个表:
create table Nation ("nationkey" integer,
"name" text,
"regionkey" integer,
"comment" text,
"null" text,
foreign key (regionkey) references Region);
create table Supplier ("suppkey" integer,
"name" text,
"address" text,
"nationkey" integer,
"phone" text,
"acctbal" real,
"comment" text,
"null" text,
foreign key (nationkey) references Nation);
create table Customer ("custkey" integer,
"name" text,
"address" text,
"nationkey" integer,
"phone" text,
"acctbal" real,
"mktsegment" text,
"comment" text,
"null" text,
foreign key (nationkey) references Nation);
我必须编写一个sql查询,该查询返回的客户比供应商多的国家/地区的名称。 该查询必须在Sqlite3中。 我真的是sql新手,不知道如何去做。
对于特定的国家/地区密钥,您可以获得COUNT个相应客户的数量:
SELECT COUNT(*)
FROM Customer
WHERE nationkey = ?
同样适用于供应商。
然后,您可以将这COUNT个查询用作相关子查询,以比较每个Nation
记录的这些值:
SELECT name
FROM Nation
WHERE (SELECT COUNT(*)
FROM Customer
WHERE nationkey = Nation.nationkey) >
(SELECT COUNT(*)
FROM Supplier
WHERE nationkey = Nation.nationkey)
使用显式JOIN
的另一种可能的解决方案:
SELECT n.name
FROM Nation n
JOIN Customer c ON n.nationkey = c.nationkey
JOIN Supplier s ON n.nationkey = s.nationkey
GROUP BY n.name
HAVING COUNT(c.nationkey) > COUNT(s.nationkey)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.