这个SQL查询是否正确

时间:2015-06-19 20:12:05

标签: mysql database

我正准备参加数据库考试,我偶然发现了这个问题:

我们有一个人力资源公司的数据库,它包含表格:

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经验,我希望有人帮我确认这确实没问题。

1 个答案:

答案 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在这种情况下不需要它:上面的评论)。

相关问题