2016-06-02 4 views
0

나는 다음과 같은 데이터가 두 개의 테이블이 부여 된 필요한
Sire_Number

듀얼 표 SQL 쿼리 도움말

나는 황소의 이름과 몇 마리의 황소 송아지와 얼마나 많은 송아지가 태어 났는지를 알려주는 SQL 문을 작성해야합니다.

어디서부터 시작해야할지, 아니면 테이블 설정으로 할 수 있는지도 모릅니다.

Bull의 경우 'B'또는 Heifer의 경우 'H'중 하나 인 'Sex'열. Sire_Number는 동물의 폐하 (Bull)가 누구인지를 알려줍니다. Sire_Number와 Registartion_Number는 상호 연관됩니다.

+0

이 학교 과제가 여기

그리고는 는 암 송아지 송아지의 수 부분입니까? 'COUNT', 다중'SELECT' 및'JOIN'을 사용하십시오. –

+0

아니요, 자원 봉사 프로젝트입니다. 이것은 하나의 SQL 문보다 훨씬 복잡 할 것입니다. – KYLE

+0

* 몇 마리의 황소 종아리와 몇 마리의 암소 송아지가 생산 되었습니까? * - 확실하지 않습니다. 내 영어는 유감이지만 표에는 ** 송아지 **가없고 ** 생산 된 ** 정의가 없습니다 ** – Alex

답변

1

이 쿼리에서 시작할 수 있습니다

SELECT p.Name 
FROM pedigree p 
INNER JOIN animal a 
ON a.Registration_Number = p.Ped_Registration_Number 
    AND a.Sex = 'B' 

모든 황소의 당신 이름 것입니다 반환.

SELECT p.Name, 
    COUNT(DISTINCT calves.Ped_Registration_Number) calves_number 
FROM pedigree p 
INNER JOIN animal a 
ON a.Registration_Number = p.Ped_Registration_Number 
    AND a.Sex = 'B' 
LEFT JOIN pedigree calves 
    ON p.Ped_Registration_Number = calves.Sire_Number 
GROUP BY p.Ped_Registration_Number 

그리고 맨 마지막 방법 :

SELECT p.Name, 
    SUM(IF(h_b.sex='B',1,0)) calves_b, 
    SUM(IF(h_b.sex='H',1,0)) calves_h, 
FROM pedigree p 
INNER JOIN animal a 
ON a.Registration_Number = p.Ped_Registration_Number 
    AND a.Sex = 'B' 
LEFT JOIN pedigree calves 
    ON p.Ped_Registration_Number = calves.Sire_Number 
LEFT JOIN a h_b 
    ON calves.Ped_Registration_Number = h_b.Registration_Number 
GROUP BY p.Ped_Registration_Number 
+0

시작 주셔서 감사합니다. 주된 문제는 암소 송아지의 수와 각 황소의 송아지 수를 세는 것입니다. – KYLE

+0

업데이트 확인 부분 – Alex

+0

정말 가까이에 있습니다. 각 황소에 대한 총 송아지의 수를 반환합니다. 각각의 폐하 (Sire)를 위해 Heifer calves (H)와 Bull calves (B)를위한 별도의 기둥을 반환하기 만하면됩니다. – KYLE

0
SELECT p.Name, 
SUM(IF(h_b.sex='B',1,0)) calves_b, 
SUM(IF(h_b.sex='H',1,0)) calves_h, 
FROM pedigree p 
INNER JOIN animal a 
ON a.Registration_Number = p.Ped_Registration_Number 
AND a.Sex = 'B' 
LEFT JOIN pedigree calves 
ON p.Ped_Registration_Number = calves.Sire_Number 
LEFT JOIN a h_b 
ON calves.Ped_Registration_Number = h_b.Registration_Number 
GROUP BY p.Ped_Registration_Number 
+0

자발적인 답변을 게시하는 것은 매우 예의 거리가 아닙니다. 특히 당신이 그 일을 한 사람이 아닌 경우 ;-) – Alex

+0

죄송합니다. Alex, 나는이 점이 좋지 않습니다. 답을 정답으로 게시하려면 어떻게합니까? – KYLE