2010-03-12 1 views
1

내 데이터베이스에는 사과, 냉장고 및 주택의 세 가지 테이블이 있습니다. 각 사과는 냉장고에 속하며 (냉장고가 들어있는 열을 가지고 있습니다), 각 냉장고는 집에 속합니다. 문제는 각 사과가 집에 속한다는 것입니다. 나는 이것이 "정상화 된"것이 든 아니든간에 그것이 정상적인 방법이라고 생각합니다.초보자 용 SQL 연결 질문 : 주택, 냉장고 및 사과

분명히, 각 사과는 냉장고가 속한 집에 속해야합니다. 사과는 한 번에 두 개의 다른 장소에있을 수 없습니다.

그래서 내 질문은 다음과 같습니다. 어떤 SQL 문을 사용하면 어떤 이유로 든 그들이 틀림없이 존재하는 냉장고와 다른 집을 참조하는 "불량 사과"를 모두 찾을 수 있습니다. 다른 말로하면, 나는 모순 된 정보가 들어있는 사과를 찾으십시오.

이 질문이 "참여"질문인지 여부는 알 수 없지만이 문제를 파악하는 데는 매우 직접적인 방법이있을 것입니다. 나는 그것이 무엇인지 모른다. 당신의 도움을 주셔서 감사합니다!

+0

그래서 관계는 'APPLES' 테이블의'parent_ownership' 열을 기반으로합니까? –

+2

왜 정규화되지 않았습니까? 명백하지만 귀찮은 대답은 "테이블을 정상화하여이 문제가 발생하지 않도록"하는 것입니다. –

+0

글쎄, 내 직업이 "고칠 수있다"는 것을 알기 위해해야 ​​할 일 중 하나는 잘못된 데이터를 찾아 사과가 올바른 위치에 놓여 있는지 확인하는 것입니다. –

답변

2
select a.* 
    from apples a 
    inner join refrigerators r 
    on a.refrigeratorid = r.refrigeratorid 
    where a.houseid != r.houseid 
2
SELECT a.* 
FROM apples a 
INNER JOIN fridge f 
ON f.appleID = a.appleID 
WHERE a.houseID <> f.houseID 

물론 이것은 잘못된 스키마 디자인이지만, 이미 알고있는 것처럼 보입니다.

+1

'집'에는 'appleID'열이 없습니다. – rodrigoap

+0

당신은 거꾸로 가지고 있습니다. 하우스는 애플 ID를 가지지 않을 것입니다. 대신 애플은 하우스 ID를 가져야합니다. –