반응형
Javascript 개체 형식 조작
나는 팀 아이디와 함께 특정 팀 아래의 모든 선수들을 받기 위해 노력하고 있습니다.
제 질문은 다음과 같습니다.
SELECT player.team_id, team.name, player.first_name, player.last_name FROM player, team WHERE player.team_id = team.id AND player.league = "League 1";
다음과 같이 결과(팀별로 저장)를 가져와 고객에게 보냅니다.
res.send({
success: true,
teams: teams
});
엔드포인트에 도달하면 다음과 같이 반환됩니다.
이 날짜를 고유한 팀별로 하나의 필드가 있는 날짜로 다시 포맷하려고 합니다.팀의 각 선수 이름에 액세스할 수 있도록 내부에 선수 필드(어레이)가 있어야 합니다.제가 이 데이터를 어떻게 그런 형식으로 조작할 수 있는지 아는 사람 있나요?
예를 들어, 이 데이터 세트의 경우, 팀 개체 안에는 "전사"라는 이름의 필드가 하나만 있을 것입니다. 플레이어 배열 안에는 모든 사람의 이름이 들어 있습니다.
답을 따라 해봤는데, 이제는 실제 물건이 아닌 끈으로 돌려주는 것뿐입니다.
집계 및 json 함수를 사용할 수 있습니다.
select
t.team_id,
t.name,
json_array_agg(
json_object('first_name', p.first_name, 'last_name', p.last_name)
) as players
from teams t
inner join players p on p.team_id = t.team_id
group by t.team_id, t.name
결과 집합의 세 번째 열은 플레이어를 나타내는 json 객체와 키를 포함하는 json 배열입니다.first_name
그리고.last_name
.
또한 전체 결과 집합을 다른 수준의 집계와 함께 json 어레이로 집계할 수 있습니다.
select json_array_agg(
json_object('team_id', team_id, 'name', name, 'players', players)
) res
from (
select
t.team_id,
t.name,
json_array_agg(
json_object('first_name', p.first_name, 'last_name', p.last_name)
) as players
from teams t
inner join players p on p.team_id = t.team_id
group by t.team_id, t.name
) t
편집:json_array_agg()
에서는 버전 10.5.0부터만 사용할 수 있습니다.이전 버전에서는 문자열 연결을 사용할 수 있습니다.
select
t.team_id,
t.name,
concat(
'[',
group_concat(json_object('first_name', p.first_name, 'last_name', p.last_name)),
']'
) as players
from teams t
inner join players p on p.team_id = t.team_id
group by t.team_id, t.name
언급URL : https://stackoverflow.com/questions/62505018/manipulating-javascript-object-format
반응형
'programing' 카테고리의 다른 글
Jquery If 라디오 버튼을 선택한 경우 (0) | 2023.08.02 |
---|---|
div 내에서 버튼의 중심을 잡는 방법은 무엇입니까? (0) | 2023.08.02 |
$가 무엇입니까?파워셸에서? (0) | 2023.08.02 |
T-SQL: 테이블을 몇 분 동안 수동으로 잠급니다. (0) | 2023.08.02 |
C의 형식 안전성 (0) | 2023.08.02 |