好的,我收到了我上周参加的评分考试,那是关于使用 Oracle Plus 的 SQL。我回答的有两个问题被标记为错误,但我强烈认为我是正确的,但他坚持认为我的答案是错误的......所以我希望这里的人能够澄清我的答案是否正确!
1.) 第一个问题说: "显示2003年5月未治疗的狗的id和名字"
因此使用以前创建的数据库,一个被称为“狗”,另一个被命名为“治疗”。
注意 两个表都填充了值 dog 表由狗 id、名称等值组成,治疗表由 treatment_id 组成,外键 (dog_id) 从表 dog 引用 dog_id, treatment_date 和其他一些字段...
所以我的回答是:
SELECT dog.dog_id, dog.name, treatment.treatment_date
FROM dog, treatment
WHERE treatment.treatment_date NOT BETWEEN '01-MAY-03' and '31-MAY-03'
AND dog.dog_id = treatment.dog_id;
但是他说错了... “--不,这些不会在 5 月处理”
2.) 我的第二个问题是 “找到所有曾经治疗过收养费最低的狗的医生。注意可能有不止一只收养费最低的狗。列出医生的id和狗的id。按医生id升序排列结果按狗 ID 升序排列并为每位医生排序。”
因此使用我们在考试前创建的其他表,一个名为 'adoption' 的属性为 'vet_id' 的外键引用了名为 vet 的表中的 vet_id , 和 'dog_id' 另一个外键;并且还使用另一个名为 'treatment' 的表,其属性为 'vet_id' 一个外键,它从名为 'vet' 的表中引用 vet_id,'dog_id' 和 'treatment_fee'
*注意 - 'treatment_fee' 此次检查的最低值(value)或费用为“15”。
我的回答是:
SELECT treatment.vet_id, adoption.dog_id
FROM adoption, treatment
WHERE adoption.dog_id = treatment.dog_id
AND treatment.fee = '15'
ORDER BY treatment.vet_id;
但他又说这是错误的...
所以,我希望这里有人可以帮助我并帮助我回答这种情况。
最佳答案
第一个答案:
SELECT dog.dog_id, dog.name
FROM dog
WHERE NOT EXISTS ( SELECT treatment.id
FROM treatment
WHERE tratment.dog_id = dog.id
AND treatment.treatment_date BETWEEN '01-MAY-03' and '31-MAY-03'
)
第二个:
SELECT distinct treatment.vet_id, treatment.dog_id
FROM adoption, treatment
WHERE adoption.dog_id = treatment.dog_id
AND dog.adoption_fee = (SELECT MIN(d2.adoption_fee)
FROM dog d2 )
ORDER BY treatment.vet_id, treatment.dog_id;
关于mysql - SQL 脚本,我的脚本准确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20129884/