2017-03-13 3 views
0

테이블 B가 테이블 C의 count(*)을 사용하여 총 결과를 얻으므로 테이블 3 개가 있고 테이블 B의 총 결과를 합산하려고합니다. 이미 두 테이블을 가지고 count(*)을 얻는 방법을 알고 있지만 3 테이블을 결합하는 방법을 알지 못했습니다. 다음은 내가 원한 예와 결과입니다. 그것은 표 A처럼MySQL 테이블 3과 테이블 3을 테이블 1과 테이블 2의 ID로 결합하십시오.

표 B에 아이를 가지고 표 B의 일부는 표 C의 아이를, 그래서 난 그냥 알고 싶어 얼마나 많은 손자

enter image description here

enter image description here 테이블의 전체

enter image description here

enter image description here

그리고 여기에 이미 단 2 표와 결합하여 사용하려고 한 코드입니다 :

SELECT 
    table_a.*, 
    (
     SELECT 
      count(*) 
     FROM 
      table_b 
     WHERE 
      table_b.id_b = table_a.id_A 
    ) AS totala 
FROM 
    table_a 
+1

당신이 결과를 설명해 주시겠습니까? – Mureinik

+0

@Mureinik 귀하의 답변을 주셔서 감사합니다, 나는 이미 결과 예제를 포함 시켰습니다. 위의 예와 같이 Music은 표 C - id_B의 데이터가 표 B - id_B와 같고 표 B - id_A가 표 A - id_A –

+0

@ JhonnyJr과 동일하므로 음악에 총 4 개의 데이터가 포함됩니다. 그 논리에 따르면, '영화'에 대한 카운트가 5가 아니어야합니까? –

답변

1

당신이 다음을 시도 할 수 조인 된 테이블의 일 수를 필요로 할 수 없습니다 :

SELECT a.id_A, a.Name, COUNT(c.id_c) AS total 
FROM table_a a 
LEFT JOIN table_B b ON a.id_A = b.id_A 
LEFT JOIN table_C c ON b.id_B = c.id_B 
GROUP BY a.id_a; 

여기에 SQL Fiddle입니다.

+0

"구문 오류가 발생했습니다 *) 결과 :"(그러나 "c"가 COUNT에서 제거되면(), 단지 빈 결과 –

+0

@ JhonnyJr으로 표시합니다. 쿼리를 수정하고 SQL Fiddle을 추가했습니다. 이제 괜찮 으면 알려주세요 .. –

+0

오, 그게 다예요 : 너 정말 대단해, ​​고마워. –

0

당신이

select a.id_A, a.name, count(*) 
from tableA a 
left join tableB b on a.id_A = b.id_A 
left join tableC c on c.id_b = b.id_b 
group by a.id_A, a.name 
+0

그냥 테이블 C와 테이블 A와 관계가있는 테이블 b의 합계 결과를 제공합니다. ( –

0

나는 당신의 아르이 찾고 생각 :

SELECT A.*, COUNT(*) as Total 
FROM table A 
INNER JOIN table B using(id_A) 
INNER JOIN table C using(id_B) 
GROUP BY A.id_A ; 
+0

그것은 내게 결과를 제공합니다. –

+0

컬럼에서 'ID_A'컬럼을 알 수 없습니다. 내 대답에 column_name에 대문자가있었습니다.하지만 그건 중요하지 않아야합니다. 이미 답변을 얻었으므로 괜찮습니다. – iLikeMySql