我正准备参加数据库考试,我偶然发现了这个问题:
我们有一个人力资源公司的数据库,它包含表格:
Applicant(a-id,a-city,a-name)
Qualified(a-id,job-id)
数据库中有更多的表,但它们与我提出的问题无关。
问题是:
我们想要编写一个查询,为每对(job-id,a-city)显示生活在该城市的人员的姓名。
此查询是否解决了这个问题?为什么呢?
Select qualified.job-id, applicant.a-city, applicant.a-name
from qualified, applicant
where quailified.a-id=applicant.a-id
group by qualified.job-id, applicant.a-city
我个人认为这个查询很好。我找不到它的任何错误,但缺乏任何实际检查方法,也缺乏SQL经验,我希望有人帮我确认这确实没问题。
答案 0 :(得分:0)
我怀疑您需要选择要返回的每个值或比较,因此您还需要选择applicant.a-id
Select qualified.job-id, applicant.a-id, applicant.a-city, applicant.a-name
from qualified, applicant
where quailified.a-id=applicant.a-id
group by qualified.job-id, applicant.a-city
我对GROUP BY非常不满意,输出最初将分组到不同的工作ID中,然后每个工作ID将按城市分组,
我也觉得这个问题并不完美,就需要实际输出而言,假设用户可以选择城市和工作,列出人员然后GROUP BYs实际上是SELECTers:
Select qualified.job-id, applicant.a-id, applicant.a-city, applicant.a-name
from qualified, applicant
where quailified.a-id=applicant.a-id
AND qualified.job-id = ? AND applicant.a-city = ? ORDER BY applicant.a-name
(我很清楚这不会使用首选的JOIN语法,但我认为OP在这种情况下不需要它:上面的评论)。