귀하의 질문은 이해하기 쉽지 않으므로이 대답은 추측입니다. 각 지역의 수신자 주소 수를 나열하고 주소가없는 지역도 표시 할 수 있기를 바랍니다.
이렇게하려면 두 개의 하위 쿼리를 함께 연결해야합니다.
이 부속 조회는 모든 region의 이름을 생성합니다.
SELECT DISTINCT wilayah FROM lokasi
이 하위 쿼리는 각 영역의 주소 개수와 함께 영역 목록을 생성합니다. 그러나이 하위 쿼리의 결과 집합에는 주소가없는 영역이 생략됩니다.
SELECT COUNT(*) num, kota_kab AS wilayah
FROM alamat_penerima
GROUP BY kota_kab
이러한 하위 쿼리를 개별적으로 테스트하여 올바른지 확인할 수 있습니다. 그렇게하는 것이 중요합니다.
마지막으로 두 테이블을 마치 테이블 인 것처럼 결합합니다. (이것이 구조화 된 쿼리 언어라고하는 이유입니다.)
SELECT w.wilayah, a.num
FROM (
SELECT DISTINCT wilayah FROM lokasi
) w
LEFT JOIN (
SELECT COUNT(*) num, kota_kab AS wilayah
FROM alamat_penerima
GROUP BY kota_kab
) a ON w.wilaya = a.wilaya
이
은 당신이 원하는 것을 얻을 수 있지만 주소 행 대신
0
의
NULL
을 보여주는 것입니다. (그 결과는
LEFT JOIN
입니다.)이 쿼리의 첫 번째 줄을 대신 사용하여
0
값을 입력 할 수 있습니다.
SELECT w.wilayah, IFNULL(a.num,0) num
디자인 트릭은 첫 번째 하위 쿼리는 LEFT이 결과로 이어지는 하위 쿼리의 정보를 넣어 가입 사용 후, 당신의 결과 세트의 행의 수를 결정하는 것입니다.
이미지 사용을 금하십시오. 텍스트를 복사하여 문제를 해결할 수 있도록 붙여 넣으십시오. 시간을 들여 테이블을 설명하고 그들과 예상 결과 사이의 "연관성"을 설명하십시오.작동하지 않는 모든 SQL을 제공하십시오. DDL을 가지고 있다면 질문에 복사하십시오. –
포인터처럼 : INNER JOIN을 사용하여 테이블을 조인하고'GROUP BY'를'COUNT (...) '와 함께 사용하여 집계 된 수를 열별로 그룹화하십시오. –
Welcome To Stack Overflow. 이것을 읽으십시오. http://meta.stackoverflow.com/a/271056/ 좋은 질문을 작성하는 작업은 종종 문제를 해결할 수있을 정도로 문제를 명확히하는 데 도움이 될 수 있습니다. –