如果我有这个架构:
Doctor(license_no, doctor_name, specialty)
Patient(pat_id, pat_name, pat_address, pat_phone, date_of_birth)
Visit(license_no, pat_id, date, type, diagnosis, charge)
我希望得到Davy Jones博士赚的钱, 逻辑上是以下查询对吗? N.B它在SQL中运行
SELECT SUM(charge)
FROM Visit v INNER JOIN Doctor d
ON (d.licence_no = v.licence_no AND doctor_name = 'davy jones')
答案 0 :(得分:5)
我的写作略有不同,以解释戴维琼斯没有患者的情况。
SELECT SUM(v.charge)
FROM Doctor d
LEFT JOIN Visit v
ON d.license_no = v.license_no
WHERE d.doctor_name = 'davy jones';
答案 1 :(得分:0)
由于您将“访问”表别名为“v”,因此在指定列(v.charge)
时也应使用别名。此外,您的内部连接条件应仅指定连接条件,而不是限制子句,应将其指定为WHERE
条件。见这个例子:
SELECT SUM(v.charge)
FROM Visit v INNER JOIN Doctor d
ON (d.licence_no = v.licence_no)
WHERE d.doctor_name = 'davy jones';
答案 2 :(得分:0)
是的:)
刚做了一个快速测试。