source

고급 MySQL 왼쪽 조인 IFNULL 쿼리

manysource 2023. 9. 2. 08:37

고급 MySQL 왼쪽 조인 IFNULL 쿼리

고급 MySQL 쿼리에 대한 도움말을 찾고 있습니다.아래 표시된 현재 쿼리는 정상적으로 작동합니다.별도의 쿼리를 작성하지 않아도 되도록 필드를 추가하고 싶습니다.새 필드, 카운트(TableA.Field05), 의 총 레코드 수를 산출해야 합니다.TableA.

표 A에는 10개의 레코드가 있습니다.
표 B에는 100개의 레코드가 있습니다.

SELECT count(TableB.Answer) AS unAnswered 
FROM TableA 
LEFT JOIN TableB 
ON ( TableA.Field01 = TableB.fkField01 AND TableA.Field02 = TableB.fkField02 AND TableB.Answer = '1') 
WHERE TableB.fkField03 IS NULL AND TableA.Field04 = 10 
GROUP BY TableA.Field01, TableA.Field02

결과:

unAnswered = 8이것이 맞습니다.

원하는 결과는 다음과 같습니다.

unAnswered = 8 count(TableA.Field05) = 10

--

이것은 데이터와 결과의 예입니다.

SELECT count(TableB.Answer) AS unAnswered
FROM TableA LEFT JOIN TableB ON ( TableA.Field01 = TableB.fkField01 AND TableA.Field02 = TableB.fkField02 AND TableB.Answer = '1')
WHERE TableB.fkField03 IS NULL AND TableA.Field04 = 10
GROUP BY TableA.Field01, TableA.Field02

TableA
Field01 = 1, Field02 = 1, Field03 = 10
Field01 = 1, Field02 = 2, Field03 = 21
Field01 = 1, Field02 = 3, Field03 = 22
Field01 = 1, Field02 = 4, Field03 = 34

TableB
Field01 = 1, Field02 = 1, Answer = 1
Field01 = 1, Field02 = 2, Answer = 1
Field01 = 1, Field02 = 3, Answer = 1
Field01 = 2, Field02 = 1, Answer = 1
Field01 = 2, Field02 = 2, Answer = 1
Field01 = 2, Field02 = 3, Answer = 1

Result
count(TableB.Answer) AS unAnswered = 1


Result trying to achive
count(TableB.Answer) AS unAnswered = 1
count(TableA.Field03) = 4

어떤 도움이라도 주시면 대단히 감사하겠습니다.

테이블 A의 개수를 현재 쿼리에 추가하려는 경우 선택 문에 추가하면 됩니다.

'SELECT count(표 B)'.답변) 무응답으로 카운트(표 A).필드02) 표 A에서 ...'

저는 방금 제 질문을 알아냈습니다.

SELECT **COALESCE(count(DISTINCT TableB.Answer)) AS unAnswered, count(DISTINCT TableA.Field05)**
FROM TableA 
LEFT JOIN TableB 
ON ( TableA.Field01 = TableB.fkField01 AND TableA.Field02 = TableB.fkField02 AND TableB.Answer = '1') 
WHERE TableB.fkField03 IS NULL AND TableA.Field04 = 10 
GROUP BY TableA.Field01, TableA.Field02

COALESCE와 DISTINCT를 추가하여 문제를 해결했습니다.여러분의 도움에 감사드립니다.

언급URL : https://stackoverflow.com/questions/29969931/advanced-mysql-left-join-ifnull-query