关于查询的意见

时间:2011-12-12 22:10:37

标签: mysql sql-server

如果我有这个架构:

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') 

3 个答案:

答案 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)

是的:)

刚做了一个快速测试。