2011-10-03 6 views
1
예를 들어

, 나는 2 개 테이블이 있습니다참조 된 테이블이 비어 있는지 확인하는 방법은 무엇입니까?

CREATE TABLE IF NOT EXISTS master(
    master_id  INT   NOT NULL AUTO_INCREMENT, 
    master_name VARCHAR(15) NOT NULL, 
    PRIMARY KEY(master_id) 
) TYPE=InnoDB CHARACTER SET=UTF8; 

CREATE TABLE IF NOT EXISTS slave(
    slave_id  INT   NOT NULL AUTO_INCREMENT, 
    slave_name  VARCHAR(15) NOT NULL, 
    master_id  INT 
    PRIMARY KEY (slave_id), 
    FOREIGN KEY (master_id) REFERENCES master(master_id) 
) TYPE=InnoDB CHARACTER SET=UTF8; 

마스터 테이블이 종속 테이블에 연결되어있는 경우 내가 확인하실 수 있습니다 어떻게하고 있는지 다음, 나는 알고 싶어 노예가 비어 있다면?

답변

1

두 개의 테이블이 조인을 수행하여 연결하는 경우가 확인할 수 있습니다.

SELECT COUNT(*) as number_of_connections 
    FROM master m 
    INNER JOIN slave s ON (s.master_id = m.master_id) 
UNION ALL 
    SELECT COUNT(*) as rows_in_slave 
    FROM slave s2 
UNION ALL 
    SELECT COUNT(*) as rows_in_master 
    FROM master m2 

이 쿼리는 슬레이브 테이블이 비어 있는지, 당신에게 연결의 수를 알려줍니다 정확히 3 행을 반환하고 마스터 테이블은 각각 ​​비어 있는지.

1

귀하의 질문을 이해할 수 있는지 확실하지 않지만 답변 드리겠습니다. 외부 키 참조 FOREIGN KEY (master_id) REFERENCES master(master_id)을 사용하여 종속 테이블을 만든 경우 마스터 테이블이 종속 테이블에 '연결'되어야합니다. 슬레이브 테이블이 비어 있는지 여부에 대한

로 :이 쿼리가 제로에 열을 반환하는 경우가 비어 :

SELECT COUNT(*) FROM slave 
관련 문제