【发布时间】:2021-11-12 02:29:46
【问题描述】:
我有一个包含以下表格的数据库:
CREATE TABLE PAR (
ID varchar(10) not null,
Name varchar(20) not null,
State varchar(20) not null,
primary key (ID)
);
INSERT INTO PAR (ID, Name, State)
VALUES
('A000','Susan','New York'),
('B123','Bob','Texas'),
('C456','Tony','Washington'),
('D789','Adam','California');
CREATE TABLE GROUP (
GroupID varchar(25) not null,
Person1 varchar(15) not null,
Person2 varchar(15) not null,
Person3 varchar(15),
Person4 varchar(15),
primary key (GroupID)
);
INSERT INTO GROUP (GroupID, Person1, Person2, Person3, Person4)
VALUES
('G234','A000','B666','C777'),
('G456','B123','D898','E632'),
('G789','C456', null, null),
('G444','D789','O123', null);
CREATE TABLE SOLO (
Classification varchar(15) not null,
ID varchar(10) not null,
Fruits varchar(10) not null,
primary key (Classification, ID)
foreign key (ID) references PAR(ID)
);
INSERT INTO SOLO(Classification, ID, Fruits)
VALUES
('A Group','A000','Apple'),
('A Group','B123','Banana'),
('B Group','C456','Orange');
CREATE TABLE GROUPINGS (
Classification varchar(20) not null,
Group varchar(25) not null,
Fruits varchar(15) not null,
primary key (Classification, Group)
foreign key (Group) references GROUP(GroupID)
);
INSERT INTO GROUPINGS(Classification, Group, Fruits)
VALUES
('A Group','G234','Apple'),
('B Group','G456','Grape'),
('A Group','G789','Banana'),
('D Group','G444','Orange');
我正在尝试从我的查询中获得以下结果:
State| Fruits
------+-------
New York| 2
Texas | 2
Washington| 2
California| 1
我创建了一个看起来像这样的查询,但它不起作用:我知道我需要总结表中所有不同的水果,并且为此我使用了公共键,但我不确定我是如何做到的我对 SQL 查询很陌生
SELECT P.State, COUNT(S.ID) + COUNT(z.Group) as gSum
FROM PARTICIPANT AS P, SOLO AS S,
GROUPINGS AS G, GROUP as Z
WHERE z.GroupID = G.Group
GROUP BY P.STATE
我需要弄清楚如何将 PAR 表中的 ID 键与 GROUP 表中的每个人列联系起来
【问题讨论】: