반응형
일대 다 관계를 가진 두 개의 테이블이 있습니다. 나는 ID 열로 테이블을 결합합니다. 내 문제는 두 번째 (tablekey_id) 테이블에서 일치하는 모든 항목의 개수가 필요하지만 부울 is_basedomain
으로 표시된 행의 정보가 필요하다는 것입니다. 참고로 동일한 tablekey_id를 가진 행 집합 당 is_basedomain
= 1 인 행이 하나만 있습니다.
표 : tablekey
id linkdata_id timestamp
22 9495028175 2013-03-10 01:13:46
23 8392740179 2013-03-10 21:23:25
표 : searched_domains.
참고 : tablekey_id는 tablekey 테이블의 id에 대한 외래 키입니다.
id tablekey_id domain is_basedomain
1 22 somesite.com 1
2 22 yahoo.com 0
3 23 red.com 1
4 23 blue.com 0
5 23 green.com 0
여기에 Im working with 쿼리가 있습니다. 하위 쿼리를 사용하려고했지만 현재 tablekey_id에 대한 개수 만 선택할 수 없으므로 작동하지 않습니다.
SELECT `tablekey_id`, `linkdata_id`, `timestamp`, `domain`, `is_basedomain`,
(SELECT COUNT(1) AS other FROM `searched_domains` AS dd
ON dd.tablekey_id = d.tablekey_id GROUP BY `tablekey_id`) AS count
FROM `tablekey` AS k
JOIN `searched_domains` AS d
ON k.id = d.tablekey_id
WHERE `is_basedomain` = 1 GROUP BY `tablekey_id`
내가 되돌리고 싶은 결과는 다음과 같습니다.
tablekey_id linkdata_id timestamp domain is_basedomain count
22 9495028175 2013-03-10 01:13:46 somesite.com 1 2
23 8392740179 2013-03-10 21:23:25 red.com 1 3
아무도 이것을 하나의 쿼리로 가져올 수 있습니까?
해결 방법
is_basedomain = 1 인 searched_domains 행을 쿼리에서 별도의 테이블로 처리하고 searched_domains의 다른 인스턴스와 조인하여 개수를 가져올 수 있습니다.
SELECT
d.tablekey_id,
k.linkdata_id,
k.timestamp,
d.domain,
d.is_basedomain,
COUNT(*) as 'count'
FROM
tablekey AS k
join searched_domains AS d on d.tablekey_id=k.id
join searched_domains AS d2 on d2.tablekey_id=d.tablekey_id
WHERE
d.is_basedomain = 1
GROUP BY
d.tablekey_id,
k.linkdata_id,
k.timestamp,
d.domain,
d.is_basedomain
참조 페이지 https://stackoverflow.com/questions/15338079
반응형
'MySql' 카테고리의 다른 글
MySQL MySql 연결 및 따옴표 (0) | 2021.01.09 |
---|---|
MySQL mysqli_insert_id ()가 항상 0을 반환하는 이유는 무엇입니까? (0) | 2021.01.09 |
MySQL : 열 값이 특정 하위 문자열로 끝나는 행 찾기 (0) | 2021.01.09 |
MySQL 노드를 사용하여 JSON 객체를 mysql로 가져 오는 가장 빠른 방법 (0) | 2021.01.09 |
MySQL md5 형식으로 데이터베이스에 암호를 삽입 하시겠습니까? (0) | 2021.01.09 |
댓글