Mysql 带连接的复杂SQL
我在mysql中创建了这三个表。我很难创建一个查询,该查询将为我提供组织的列表,以及它们筹集的资金总额。资金将来自未经培训的学生和捐款人。任何帮助都将不胜感激Mysql 带连接的复杂SQL,mysql,sql,Mysql,Sql,我在mysql中创建了这三个表。我很难创建一个查询,该查询将为我提供组织的列表,以及它们筹集的资金总额。资金将来自未经培训的学生和捐款人。任何帮助都将不胜感激 CREATE TABLE STUDENT ( StudentID INT PRIMARY KEY, StudentFirstName char(100) NOT NULL, StudentLastName char(100) NOT NULL, OrgID INT NOT NULL AmountRaised INT NOT NULL, C
CREATE TABLE STUDENT (
StudentID INT PRIMARY KEY,
StudentFirstName char(100) NOT NULL,
StudentLastName char(100) NOT NULL,
OrgID INT NOT NULL
AmountRaised INT NOT NULL,
Captain Char(3) Null,
);
CREATE TABLE ORGANIZATIONS(
OrgID INT PRIMARY KEY,
OrgName char(100) Not Null,
OrgCategory char(100) Not NULL,
AmountRaised int NOT NULL
);
CREATE TABLE KIDS (
KidId int PRIMARY KEY,
KidFirstName char(100) NOT NULL,
KidLastName char(100) NOT NULL,
OrgID INT NOT NULL,
);
CREATE TABLE DONORS(
DonorID int Primary Key,
DonorFirstName char(100) NOT NULL,
DonorLastName char(100) NOT NULL,
DonorOrganization char(100) NOT NULL,
AmountContributed int NOT NULL,
);
看起来应该是这样的:
SELECT id, sum(amount) FROM (
(
SELECT o.id as id, sum(d.AmountContributed) as amount
FROM organizations o
JOIN donors d ON d.donororganization = o.id
GROUP BY o.id
) AS t
UNION ALL
(
SELECT o.id as id, sum(s.AmountRaised) as amount
FROM organizations o
JOIN student s ON s.orgid = o.id
GROUP BY o.id
) AS t
) as t
GROUP BY o.id;
我倾向于:
select orgid, sum(AmountRaised) as AmountRaised, sum(AmountDonated) as AmountDonated,
(sum(AmountRaised) + sum(AmountDonated)) as total
from ((select s.orgid, AmountRaised, 0 as AmountDonated
from student s
) union all
(select d.orgid, 0 as AmountRaised, AmountDonated
from donors d
)
) o
group by orgid;
您可以使用附加的
join
来引入有关组织的附加数据。使用一些示例数据编辑问题,期望得到的结果会有所帮助。另外,请告诉我们这些表之间的关系。如果不知道这一点,就无法真正编写连接查询。这里有语法错误,除非所有学生的名字都正好包含100个字符,否则Char(100)是非常浪费的。看看varcharSo你自己的查询到什么程度了?您到底被困在哪里了?缺少括号,每个派生表myst都有自己的别名。