2017-04-22 1 views
0

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 

하십시오입니까? 감사.

+0

가능한 [table1에 일치하지 않는 데이터를 유지하면서 table2의 1 col의 모든 데이터를 결합하는 방법] (http://stackoverflow.com/questions/25094865/how-do-i-join- 모든 데이터 1 열 - 테이블 2 - 테이블 1 - 유지 - 불일치) – mrtig

답변

0

이 시도 : 당신은보다 select에 더 열을 선택하는

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 
+0

@ KristikaTalwar,이 오류가 발생했습니다 : 메시지 8120, 수준 16, 상태 1, 줄 1 열 'loans.disb_date'는 집계 함수 또는 GROUP BY 절에 포함되어 있지 않기 때문에 선택 목록에서 유효하지 않습니다. –

+0

소중한 시간을 내 주셔서 감사합니다. –

+0

내 편집을 확인하십시오. 선택 목록에서 disb_date를 제거하거나이 절을 @fagbemiayodele이라는 그룹에 추가하십시오. – kritikaTalwar

0

group 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으로 변경했습니다. 귀하의 질문은 구체적으로 "모든 행"을 말하며, 대출이없는 행조차도 제안합니다.

+0

감사합니다. 그것은 효과가 있었다. –

+0

loans 테이블에서 4 행을 말하는 것과 같은 또 다른 것을 추가하려고 할 때 오류가 출력됩니다. 나는 그들을 계속 그룹화 할까? –

+0

@fagbemiayodele. . . 새로운 질문을 * 새로운 * 질문으로해야합니다. –

0

나는 Gordon linoff에 동의합니다. 하위 쿼리의 선택 부분에 있더라도 group by에 disb_date가 포함되어 있지 않기 때문입니다. 그러나 올바른 결과가 나오지 않기 때문에 그룹에 추가하고 싶지는 않습니다.

특정 달에 대한 대출 검색을 원하기 때문에 disb_date를 원한다고 생각합니다. 이 올바른지? 그렇다면, 나는 고든의 솔루션에 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; 

.

관련 문제