如何从两个表中选择和计算数据?

时间:2015-11-09 15:11:59

标签: mysql sql database

我有一张制作表和一张fournisseur表,但我想从数据库中选择所有我的四位数,我想计算字段nvsolde(solde-SUM(facture.montant))。但是当我使用这个请求时,它只给了四个人已经有了一个制服。

SELECT fournisseur.id
     , fournisseur.nom
     , fournisseur.solde
     , fournisseur.solde-SUM(facture.montant) AS nvsolde 
FROM fournisseur
   , facture 
WHERE facture.id = fournisseur.id 
GROUP BY fournisseur.nom"

1 个答案:

答案 0 :(得分:0)

从描述问题的方式来看,您需要left join。现在是添加此建议的好时机:从不FROM子句中使用逗号。 始终使用明确的JOIN语法。

SELECT fo.id, fo.nom, fo.solde,
       fo.solde - COALESCE(SUM(fa.montant), 0) AS nvsolde 
FROM fournisseur fo LEFT JOIN
     facture fa
     ON fa.id = fo.id 
GROUP BY fo.id;

一些注意事项:

  • 如果没有匹配项,您需要COALESCE()。这会将NULL转换为0
  • 表别名使查询更易于编写和阅读。
  • ORDER BY使用id列,该列可能在fornisseurs中是唯一的。 GROUP BY中使用主键或唯一键是可以接受的,也是一种很好的做法(甚至符合ANSI标准)。但是,使用其他列肯定是糟糕的练习。