2013-12-09 4 views
0

여러 연결된 테이블이있는 솔루션을 프로그래밍하려고합니다.MySQL : 기존 값이 없습니다.

table1k_id

table2는 (s_k_id 같이) 각 행에 할당 된 k_id를 갖는 행을 포함하지만, 임의 k_id table2는 다수의 행을 가질 수 필드 ID가 행을 포함한다. table2의 모든 항목은 k_id

하나가 지금은 s_k_idtable2에서 사용되지 k_ids의 수 (늦은 아마 목록)를 갖고 싶어 할 수 있습니다.

내 질문을 이해하시기 바랍니다.

내 솔루션이 될 수 있지만 더 나은 해결 될 수 있다고 가정합니까?

SELECT count(k_id) AS `count` FROM tabel1 WHERE k_id NOT IN (SELECT s_k_id FROM table2) 

어떻게하면 좋을까요? (귀하의 SQL 문이 수행하는 간단한 설명을 포함하십시오)

Thank you!

+0

당신이 이미 가지고있는 쿼리 뭐가 문제? –

답변

1

당신은

SELECT COUNT(DISTINCT k_id) count 
    FROM table1 t1 LEFT JOIN table2 t2 
    ON t1.k_id = t2.s_k_id 
WHERE t2.s_k_id IS NULL 

또는 여기

SELECT COUNT(k_id) count 
    FROM table1 t 
WHERE NOT EXISTS 
(
    SELECT * 
     FROM table2 
    WHERE s_k_id = t.k_id 
) 

을 시도 할 수있다 SQLFiddle 데모

+0

도움이 되셨습니까? 질문에 대한 도움이 더 필요하십니까? – peterm

관련 문제