sql join查询没有返回数据,只是空白

时间:2016-07-26 01:08:06

标签: sql inner-join

我正在尝试从2个单独的表中提取数据,但只提取特定列,然后我进行连接,这样每个客户端只显示一行,并显示其付款总额,但信息未显示。代码如下。它适用于报告页面,因此请考虑确定所有付款的总和。我知道我在寻找什么,我只是觉得可能在查询中有一个我似乎无法捕获的错误。如果可能的话,我可以使用额外的一双眼睛来指出这个缺陷。感谢

SELECT   pre.id, pre.loanAmount, pre.custId, 
         SUM(pay.amount) AS amount, 
         DISTINCT(pay.company) AS company, 
         DISTINCT(pay.loanId) AS loanId
FROM preQualForm pre INNER JOIN
     payments pay
     ON pre.custId=pay.custId

3 个答案:

答案 0 :(得分:1)

DISTINCT关键字适用于您SELECT的所有列, 所以如果你还需要像SUM这样的聚合函数, 然后在非聚合列上使用GROUP BY子句可以更好地实现。

以下情况应该有效。

SELECT   
    pre.id
    , pre.loanAmount
    , pre.custId
    , SUM(pay.amount) AS Amount
    , pay.company AS Company
    , pay.loanId AS LoanId
FROM preQualForm pre 
     INNER JOIN payments pay
     ON pre.custId = pay.custId
GROUP BY
    pre.id
    , pre.loanAmount
    , pre.custId
    , pay.company
    , pay.loanId

答案 1 :(得分:0)

对于初学者来说,你错过了GROUP BY条款。 (可能还有其他问题,但我们需要数据和预期输出)

SELECT pre.id, pre.loanAmount, pre.custId, SUM(pay.amount) AS amount,
       DISTINCT(pay.company) AS company, 
       DISTINCT(pay.loanId)  AS loanId
   FROM preQualForm pre
   INNER JOIN payments pay
   ON pre.custId=pay.custId
GROUP BY  pre.id, pre.loanAmount, pre.custId

答案 2 :(得分:0)

DISTINCT()不是SQL中的函数(至少不是我熟悉的任何方言)。我将从这个查询开始:

SELECT pre.custId, SUM(pay.amount) AS amount
FROM preQualForm pre INNER JOIN
     payments pay
     ON pre.custId = pay.custId
GROUP BY pre.custId;

它似乎会回归你想要的东西。如果这不能返回您真正想要的所有信息,您可以增强它。