MySQL - 각 행의 연결된 테이블에서 COUNT()가 표시된 열을 가져옵니다.
MySQL(5.5.60-MariaDB)에 데이터베이스가 있습니다.
나는 하고 있습니다.SELECT테이블에서 행을 가져오기 위한 쿼리revision_filters그 다음에 다양한INNER JOIN연결된 데이터를 가져옵니다.쿼리는 다음과 같이 표시되며 올바르게 실행됩니다.
SELECT RevisionFilters.id AS `RevisionFilters__id`,
RevisionFilters.date AS `RevisionFilters__date`,
RevisionFilters.comment AS `RevisionFilters__comment`,
filters.label AS `Filters__label`,
filters.anchor AS `Filters__anchor`,
groups.label AS `Groups__label`
FROM revision_filters RevisionFilters
INNER JOIN dev_hub_subdb.filters Filters
ON filters.id = ( RevisionFilters.filter_id )
INNER JOIN dev_hub_subdb.groups Groups
ON groups.id = ( filters.group_id )
INNER JOIN dev_hub_subdb.regulations Regulations
ON regulations.id = ( groups.regulation_id )
라는 테이블이 있습니다.revision_filters_substances표의 구조는 다음과 같습니다.이 경우에는revision_filter_id에 관련된 외부 키입니다.revision_filters.id.
mysql> describe revision_filters_substances;
+--------------------+-----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+-----------------------+------+-----+---------+----------------+
| id | mediumint(8) unsigned | NO | PRI | NULL | auto_increment |
| revision_filter_id | mediumint(8) unsigned | NO | MUL | NULL | |
| substance_id | mediumint(8) unsigned | NO | MUL | NULL | |
+--------------------+-----------------------+------+-----+---------+----------------+
내가 하고 싶은 것은 나의SELECT반환된 각 행에서 다음을 얻을 수 있도록 쿼리합니다.COUNT의 행 수 중에서revision_filters_substances의 행에 해당하는.SELECT을 묻다.revision_filters.
경우에 따라 다음에 행이 없을 수 있습니다.revision_filters_substances특정에 해당하는revision_filters.id이 경우 0을 반환하려면 카운트가 필요합니다.
저는 https://dba.stackexchange.com/questions/133384/counting-rows-from-a-subquery 을 읽었습니다.
하지만 제 질문에 어떻게 적응해야 할지 모르겠어요.
링크된 기사에 나와 있습니다.
하위 쿼리는 FROM 키워드 바로 뒤에 와야 합니다.
그래서 저는 바로 다음에 이것을 시도했습니다.FROM revision_filters RevisionFilters이미 가지고 있는 쿼리에서:
, (SELECT COUNT(id) FROM revision_filters_substances WHERE id = revision_filters.id) AS count_substances
하지만 다음 오류가 발생합니다.
'where 절'의 'revision_filters.id' 열을 알 수 없습니다.
이것이 가능한지 누가 조언해 줄 수 있습니까?해당 행이 없으면 0을 지정하는 방법도 보이지 않으므로, 이를 달성하는 방법에 대한 조언도 필요합니다.
별칭을 지정했습니다.revision_filters의 식탁.RevisionFilters.사용하다RevisionFilters.id대신에where상관 하위 쿼리의 절입니다.
또한 "행 없음"을 처리하기 위해 현재 하위 쿼리가 반환됩니다.NULL0을 반환하려면 주변을 사용해야 합니다.
SELECT .... ,
COALESCE(SELECT COUNT(id)
FROM revision_filters_substances
WHERE id = RevisionFilters.id, 0) AS count_substances
.... /* your rest of the query here (FROM, WHERE clauses etc) */
언급URL : https://stackoverflow.com/questions/57801999/mysql-get-a-column-showing-count-from-an-associated-table-on-each-row
'programing' 카테고리의 다른 글
| datetime64[ns]' 데이터 유형과 '< h2="" papago-id="0-1" 데이터 유형의 차이>저는 판다에서 시계열을 만들었습니다.[346]에서: 날짜/시간 가져오기[347]에서: 날짜 = [날짜 시간(2011, 1, 2), 날짜 시간(2011, 1, 5.. (0) | 2023.07.27 |
|---|---|
| OR 문을 사용하여 Pandas 데이터 프레임 필터링 (0) | 2023.07.27 |
| 아이폰의 화면 키보드 높이는 얼마입니까? (0) | 2023.07.27 |
| Oracle - Materialized View는 전체 새로 고침 중에도 액세스할 수 있습니다.이것은 어떻게 작동합니까? (0) | 2023.07.27 |
| DAO 및 서비스 계층(JPA/하이버네이트 + 스프링) (0) | 2023.07.27 |