我有四张桌子:
Applicant
(援助,aname)entrance_test
(Etid,etname)etest_centre
(etcid,location)etest_details
(援助,etid,etcid,etest_dt)我想选择每个测试中出现的申请人数,测试中心明智。
这是我目前的查询:
select
location, etname, count(Aid) as number of applicants
from
applicant as a
inner join
etest_details as d on a.aid = d.aid
inner join
Entrance_Test as t on t.Etid = d.Etid
inner join
Etest_Centre as c on c.Etcid = d.Etcid
group by
Location, Etname
这是我得到的错误:
不明确的列名'Aid'
答案 0 :(得分:1)
您在多个表格中都有列aid
,并且它不知道从中挑选哪个。您应该使用您定义的别名指定它来自哪个表。
在这种情况下,由于a.Aid与d.Aid相同(由于JOIN
),我使用a
别名,但请注意{ {1}}和location
也会出现在多个表中,您需要指定应从哪个表中选择。
etname
根据经验,当您在一个查询中有多个源时,您应该始终明确它应该来自哪个表。即使你确定它只存在于其中一个中,但在未来避免这类问题也是一个好习惯。
答案 1 :(得分:0)
您需要在COUNT
子句中提及别名。由于您使用的是别名,因此如果您在SELECT
和GROUP BY
部分中使用它们会更好。在这种情况下,它应该是:
SELECT a.location,
a.etname,
COUNT(d.Aid)
FROM applicant AS a
INNER JOIN etest_details AS d ON a.aid = d.aid
INNER JOIN Entrance_Test AS t ON t.Etid = d.Etid
INNER JOIN Etest_Centre AS c ON c.Etcid = d.Etcid
GROUP BY a.Location,
a.Etname