programing

다른 테이블에서 동일한 ID의 SQL 쿼리 수 행

goodsources 2022. 9. 11. 20:05
반응형

다른 테이블에서 동일한 ID의 SQL 쿼리 수 행

이미 다른 답변을 확인했지만 안타깝게도 도움이 되지 않았습니다.그래서 나는 다른 테이블에서 같은 아이디가 몇 개인지 세어보고 싶다.제 테이블은 이렇게 생겼어요.

여기에 이미지 설명 입력

왼쪽에서 첫 번째 테이블은 "resources"이고 두 번째 테이블은 "equipment_entity"입니다.그래서 몇 명인지 세어보고 싶다.resource_class_id와 결합하면 있다equipment_entity.id. 지금까지 시도했지만 효과가 없습니다.어떤 도움이라도 좋습니다.같은 문제 또는 도움말이 있는 링크.감사합니다!

SELECT e.*, r.equipment_class_id, r.resource_type FROM equipment_entity as e LEFT JOIN resources as r ON e.id = r.equipment_class_id COUNT(DISTINCT r.equipment_class_id) where r.resource_type = 'equipment'

그리고 이 에러가 발생하고 있습니다.

1064 - SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 설명서에서 'COUNT(DISTINCT r.disc_class_id)' 근처에서 사용할 올바른 구문을 확인하십시오. 여기서 r.resource_type = 'limit 0'은 1행입니다.

다음 쿼리를 실행해 보십시오.그러면 equipment_entity 테이블의 모든 행과 각 기기의 리소스 테이블 내의 행 수가 표시됩니다.

SELECT e.*, count(*) AS count FROM `equipment_entity` AS e left join `resources` AS r ON e.id = r.equipment_class_id GROUP BY e.id

두 가지 옵션이 있습니다.r.resource_type = 'counts'에 대한 카운트를 알고 싶은 경우 첫 번째 쿼리가 작동합니다.

SELECT COUNT(DISTINCT r.equipment_class_id)
FROM equipment_entity AS e
     LEFT JOIN resources AS r ON e.id = r.equipment_class_id
WHERE r.resource_type = 'equipment';

그러나 모든 resource_type의 카운트를 한 번에 표시하려면 다음과 같이 GROUP BY를 사용하여 원하는 결과를 얻을 수 있습니다.

SELECT r.equipment_class_id,
COUNT(DISTINCT r.equipment_class_id)
FROM equipment_entity AS e
     LEFT JOIN resources AS r ON e.id = r.equipment_class_id
GROUP BY r.equipment_class_id;

이것을 사용하다

SELECT r.equipment_class_id, r.resource_type, count(r.equipment_class_id) count 
FROM equipment_entity as e LEFT JOIN resources as r 
ON e.id = r.equipment_class_id  where r.resource_type = 'equipment' GROUP BY equipment_class_id

따라서 equipment_entity.id에 가입했을 때 resource_class_id가 몇 개 있는지 세어 보겠습니다.

이게 무슨 뜻인지 잘 모르겠어요.다음 두 가지 해석이 있습니다.

데이터 모델에 따라 표는resources적어도 두 개의 열이 있는 것 같습니다.id그리고.resource_class테이블equipment_entity가지고 있는 것 같다resource_class_id이 답변은 이 이름들을 반영하여 수정하였습니다.

특정 리소스 유형을 가진 기기의 수를 계산하려면JOIN그리고.COUNT():

SELECT COUNT(*)
FROM equipment_entity  e JOIN
     resources r
     ON r.id = e.resource_class_id
WHERE r.resource_class = 'equipment';

둘 다 아니다.COUNT(DISTINCT)아무것도 아니다LEFT JOIN필요합니다.

모든 리소스 클래스를 카운트하려면 다음과 같이 하십시오.

SELECT r.resource_class, COUNT(e.id)
FROM resources r JOIN
     equipment_entity e
     ON r.id = e.resource_class_id
GROUP BY r.resource_class;

언급URL : https://stackoverflow.com/questions/57131112/sql-query-count-row-of-same-id-in-a-different-table

반응형