gpt4 book ai didi

sql - 帮助处理两个 SQL 查询

转载 作者:行者123 更新时间:2023-11-29 01:01:41 26 4
gpt4 key购买 nike

我在处理两个查询时遇到了一些困难。我可以获得一些信息,但我的问题在于一些特殊情况,我似乎无法在 SQL 语句中正确处理。

第一个查询是用自然语言定义的:

我要找到在同一时间段内,但来自不同机构的所有获得两个资格证书的候选人

我的关系模式如下所示:

粗体 = 主键

ITALICS = 外键

candidate = (candidateid, name, birth, mail)

qualification = (qualificationid, instituteid, candidateid, datestarted, datefinished, degreename, major)

institute = (instituteid, institutename, city)

我尝试运行的 SQL 不是很漂亮(在这一点上)并且也没有工作,但它是:

select (candidate.firstname, candidate.lastname) 
from candidate, qualification, institute
where (select count(qualification.candidateid) from qualification where qualification.candidateid = 2)
and between qualification.datestarted and qualification.datefinished
and qualification.instituteid <> qualification.instituteid

我给了我一个错误,我很漂亮,几乎可以肯定它在 COUNT 子句中,但我似乎无法破解它如何计算 candidateid 的数量并将条件设置为二 (2) 和然后我也很确定我检查时间段有问题。他们必须处于同一时间段。顺便说一下,开始日期和完成日期是 DATE 格式。

我遇到问题的第二个查询是用自然语言表述的,如下所示:

查找所有查询过候选人但平均年龄低于30岁(候选人)的公司名称。

我的关系模式如下所示:

candidate = (candidateid, name, birth, mail)

qualification = (qualificationid, instituteid, candidateid, datestarted, datefinished, degreename, major)

inquiry = (inquiryid,candidateid, companyid)

我试过的查询是这样的:

select (company.companyname) as company
from company, inquiry, candidates
where company.companyid = inquiry.companyid
and inquiry.candidateid = candidate.candidateid
and (select avg(candidate.birth < (right(curdate(),5<right(birth,5)) from candidate)))

BIRTH 表也被描述为 DATE 字段。

我希望你能帮我解决这两个问题,如果对它们有任何疑问,请说出来,我会尽力澄清。

梅斯蒂卡

最佳答案

您的另一个问题是使用笛卡尔 JOINS(在 FROM 子句中列出以逗号分隔的表)而不是显式 JOIN(INNER 或 LEFT 或 RIGHT)。你可能会发现 Understanding SQL Joins一本好书。

关于sql - 帮助处理两个 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2722942/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com