如何在一个中显示2个不同查询的结果?

时间:2014-11-08 03:09:40

标签: sql sql-server

如果问题本身没有多大意义,我很抱歉,但让我解释一下。

我有两张桌子:医学和捐赠

医学有:

id_medicine 医学 量

和捐款有:

id_donation id_medicine 量

我想要的是一个查询,向我显示可用药物的总量。

我有这个问题:

    SELECT Medicine.name AS 'Medicine', Medicamento.quantity + Donation.quantity AS Quantity 
    FROM Donation 
    INNER JOIN medicine ON donation.cod_medicine = Medicine.cod_medicine 
    ORDER BY 'Medicine'

但是这只显示了捐赠的药物,如果药物没有一次捐赠,那么它就不会出现。那么,再次,即使没有捐赠,我怎样才能获得每种药物的总量?谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用NVL函数进行外部联接(假设它是Oracle数据库):

SELECT Medicine.name AS 'Medicine', Medicamento.quantity + NVL(Donation.quantity, 0) AS Quantity 
FROM Donation 
LEFT OUTER JOIN medicine ON donation.cod_medicine = Medicine.cod_medicine 
ORDER BY 'Medicine'

如果是SQL Server,请将NVL替换为ISNULL

NVL或ISNULL函数用于将null值替换为其他函数,函数的第二个参数,此处为0。

答案 1 :(得分:1)

试试这个

SELECT
    Medicine.name AS Medicine
    , Medicine.quantity + COALESCE(Donation.quantity, 0) AS Quantity
FROM Medicine
    LEFT JOIN Donation ON donation.id_medicine = Medicine.id_medicine
ORDER BY Medicine
相关问题