簡體   English   中英

如何通過選擇第一個表中的整個值和第二個表中的一些值來聯接多個表

[英]How to join multiple tables by selecting the whole values in the first table and some values in the second table

我的SQL查詢出現問題。 我試圖從用戶表中獲取所有值,並將本月他們在貸款表上收集的貸款加起來,但是每次運行查詢時,我都會出錯。

這是SQL查詢

SELECT * FROM customer c 
     INNER JOIN(SELECT SUM(loan_amt) as lamt, disb_date, ac_no FROM loans GROUP BY ac_no) AS l ON c.cust_no=l.ac_no

拜托,我在做什么錯? 謝謝。

嘗試這個:

SELECT c.*,l.lamt FROM customer c INNER JOIN(SELECT SUM(loan_amt) as lamt, disb_date, ac_no FROM loans GROUP BY ac_no,disb_date) AS l ON c.cust_no=l.ac_no

您在select中選擇的列比在group bygroup by 所以:

SELECT c.*, l.lamt
FROM customer c LEFT JOIN
     (SELECT SUM(loan_amt) as lamt, ac_no
      FROM loans
      GROUP BY ac_no
     ) l
     ON c.cust_no = l.ac_no;

請注意,我還將LEFT JOIN更改為LEFT JOIN 您的問題專門說“所有行”,這表示即使沒有貸款的行也是如此。

我同意Gordon linoff。 這是因為您的group by即使在子查詢的select部分中也不包含disb_date。 但是,您不希望將其添加到組中,因為它可能不會產生正確的結果。

我猜您想要disb_date,因為您想檢索特定月份的貸款。 這個對嗎? 如果是這樣,我將在Gordon解決方案中添加一個where子句:

SELECT c.*, l.lamt
FROM customer c LEFT JOIN
     (SELECT SUM(loan_amt) as lamt, ac_no
      FROM loans WHERE disb_date BETWEEN <insert date> AND <insert date>
      GROUP BY ac_no
     ) l
     ON c.cust_no = l.ac_no;

這將調出僅在您指定月份收集的貸款總額。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM