source

결과 열의 다른 값을 다른 열 sql의 값별로 단일 행으로 가져오는 방법

manycodes 2023. 8. 4. 23:12
반응형

결과 열의 다른 값을 다른 열 sql의 값별로 단일 행으로 가져오는 방법

다음 테이블이 있습니다.

팀 동료 ID 팀메이트명 팀 ID
1 에이미. 11 판매의
1 에이미. 12 지지하다
1 에이미. 13 마케팅.
2 피터야. 12 지지하다
2 피터야. 13 마케팅.

그리고 아래와 같이 팀 이름 또는 팀 이름을 기준으로 팀 열이 하나의 행에 나타나도록 결과를 그룹화합니다.

팀 동료 ID 팀메이트명 팀 ID
1 에이미. 11, 12, 13 영업, 지원, 마케팅
2 피터야. 12, 13 지원, 마케팅

이 목적을 위해 어떤 기능을 사용하는 것이 가장 좋습니까?하위 쿼리, 병합, 이상한 XML 경로 등을 시도했지만 새로운 SQL 사용자로서 이 문제를 해결하는 데 몰두할 수 없습니다.

나에게 결과를 준 나의 원래 질문은;

   SELECT
    tm.teammate_id AS "Teammate ID",
    tm.name AS "Teammate name",
    
    itt.team_id AS "Team IDs",
    
    it.team AS "Teams"
    
    
FROM
    intercom_teammates AS tm

LEFT JOIN intercom_teammate_teams AS itt 
ON tm.teammate_id = itt.teammate_id

LEFT JOIN intercom_teams AS it 
ON tm.teammate_id = itt.teammate_id

단순한 group_concat이면 다음과 같은 효과를 볼 수 있습니다.

select it.TeammateID,
       group_concat( distinct it.Teammatename SEPARATOR ',') as Teammatename,
       group_concat( it.Teamid SEPARATOR ',') as Teamid,
       group_concat( it.Teams SEPARATOR ',') as Teams
from intercom_teammates it
group by it.TeammateID ;

https://dbfiddle.uk/rU8-h8rX

참고. 나는 팀메이트 이름에 고유한 이름을 사용했지만, 나는 그것이 과도하다고 생각하고 모든 다른 팀메이트에 대해 그것을 제거할 수 있습니다.팀 이름이 고유한 ID입니다.

SELECT
    tm.teammate_id AS "Teammate ID",
    tm.name AS "Teammate name",
    GROUP_CONCAT(DISTINCT itt.team_id ORDER BY itt.team_id ASC) AS "Team IDs",
    GROUP_CONCAT(DISTINCT it.team ORDER BY it.team DESC) AS "Teams"
FROM intercom_teammates tm
LEFT JOIN intercom_teammate_teams itt ON tm.teammate_id = itt.teammate_id
LEFT JOIN intercom_teams it ON tm.teammate_id = it.teammate_id
GROUP BY tm.teammate_id, tm.name

참고: 수정했습니다.JOIN로.intercom_teams변화하는itt.teammate_id로.it.teammate_id그것은 결과 세트를 벗어던지고 있었습니다.

결과:

| Teammate ID | Teammate name | Team IDs | Teams                    |
|-------------|---------------|----------|--------------------------|
| 1           | Amy           | 11,12,13 | Support,Sales,Marketing  |
| 2           | Peter         | 12,13    | Support,Marketing        |

여기서 만지작거려요.

언급URL : https://stackoverflow.com/questions/74193905/how-to-bring-different-values-from-results-column-into-single-row-by-value-from

반응형