다른 테이블에서 동일한 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
'programing' 카테고리의 다른 글
MySQL을 사용하여 빈 필드 확인 (0) | 2022.09.11 |
---|---|
jQuery를 사용하여 현재 URL을 가져오시겠습니까? (0) | 2022.09.11 |
MariaDB에서 자동 완료를 활성화하려면 어떻게 해야 합니까? (0) | 2022.09.11 |
Python으로 NULL 데이터를 MySQL 데이터베이스에 삽입하려면 어떻게 해야 하나요? (0) | 2022.09.11 |
어제 PHP 날짜 (0) | 2022.09.08 |