병합 할 SQL 쿼리가 2 개 있습니다. 유감스럽게도 MYSQL에 익숙한 사용자는 아닙니다. 구조가 잘못이다, 내가 원하는 모든 데이터를 얻을UNION 쿼리가 여분의 열을 반환하지 않습니다.
-----------------------|--------------------
species | f
-----------------------|--------------------
M_A_1789 | 5
-----------------------|--------------------
M_A_1789 | 1
-----------------------|--------------------
M_A_1731 | 5
-----------------------|--------------------
M_A_1731 | 1
Allthough이 같은
SELECT animal.species, count(animal.species) as f
FROM disp, animaldesc, animal
WHERE disp.disp_id = animaldesc.disp_id
AND animaldesc.authored = 1
AND animaldesc.animal_id = animal.id
GROUP BY animal.species
union
SELECT animal.species, count(animal.species) as f_specific
FROM disp, animaldesc, animal
WHERE disp.disp_id = animaldesc.disp_id
AND animaldesc.authored = 1
AND animaldesc.animal_id = animal.id
AND disp.language = "en_gb"
GROUP BY animal.species
ORDER BY f DESC
이 쿼리가 반환하는 데이터 : 지금이 들어
내 쿼리입니다. JOIN을하는 대신 UNION을 사용하는 것과 관련이 있다고 생각합니다. 그러나 나는 f_specific이 f보다 적은 행을 반환 할 수 있으므로 어떤 유형의 JOIN을 사용할 지 확신하지 못합니다.UNION 메서드를 사용하는 것 이외의 두 쿼리를 결합하는 명확한 설명을 찾을 수 없습니까? JOIN 키워드를 사용하여 쿼리에서 다음을 반환하는 방법은 무엇입니까?
-----------------------|------------|---------------
species | f | f_specific
-----------------------|------------|---------------
M_A_1789 | 5 | 1
-----------------------|------------|---------------
M_A_1731 | 5 | 1
-----------------------|------------|---------------
감사합니다.
IF (disp.language = "en_gb", 1, 0)'에 'IF (disp.language = "en_gb"), 1, 0을 입력하십시오. – Leran2002
예,이 쿼리가 작동했습니다. IF 문에 문제가있어서, 그것을 'SUM'으로 대체했습니다 (disp.language = "en_gb"then then else 0 end). AS f_specific' Thanks! –
아, 'IF'의 닫는 괄호가 잘못 배치되었습니다. 나는 그것을 지금 고쳤다. – axiac