반응형
오른쪽 테이블 결과에서 다차원 배열 가져오기
테이블이 두 개 있습니다.첫 번째는 고객 정보이고 두 번째는 전화번호입니다.그래서 첫 번째 표에서 저는 다음과 같습니다.
ID Name
1 John
2 jill
두 번째 표에는 다음과 같은 것이 있습니다.
ID phone ext notes customerID
1 687-5309 20 Primary 1
2 687-5310 55 John's cell phone 1
3 687-5311 18 Note! Emergency Only! 1
4 235-1189 2
5 235-2324 24 title:owner 2
제가 그것을 조회할 때, 저는 오른쪽 표에서 다차원적인 결과를 저에게 줬으면 합니다.결과는 다음과 같습니다.
[ID]=>1
[Name]=>John
[phoneList]=>[
[
[ID]=>1 , [phone]=>687-5309 , [ext]=>20 , [notes]=>Primary ],
[ID]=>2 , [phone]=>687-5310] , [ext]=>55 , [notes]=>John's cell phone ],
[ID]=>3 , [phone]=>687-5311] , [ext]=>18 , [notes]=>Note! Emergency Only! ],
]
]
제가 할 수 있는 한 여기까지입니다.
SELECT *
FROM customer_info
LEFT JOIN (
SELECT *
FROM phone_numbers
) WHERE ID=1
이게 가능한지조차 잘 모르겠어요.하지만 그래야 할 것 같아요.
customer_info를 그룹화하지 않으면 단순한 LEFT JOIN이 됩니다.
SELECT cust.*, phone.ID AS phone_id, phone.phone, phone.ext, phone.notes
FROM customer_info AS cust
LEFT JOIN phone_numbers AS phone ON phone.customerID = cust.ID
WHERE cust.ID = 1;
하지만 customer_info ID당 하나의 레코드를 원한다면요?
그러면 당신도 할 수 있습니다.GROUP BY
customer_info를 선택한 다음 GROUP_CONCAT를 사용하여 전화 ID와 전화 번호가 포함된 문자열 1개를 가져옵니다.
SELECT cust.ID, cust.Name,
group_concat(concat(phone.ID,':',concat_ws(',', phone.phone, ifnull(phone.ext,''), phone.notes)) separator ';') AS phoneList
FROM customer_info AS cust
LEFT JOIN phone_numbers AS phone ON phone.customerID = cust.ID
WHERE cust.ID = 1
GROUP BY cust.ID, cust.Name;
그리고 JSON_OBJ(MariaDB, MySql) 기능을 사용할 수 있다면, 그것을 사용할 수 있습니다.
SELECT cust.ID, cust.Name,
group_concat(JSON_OBJECT('id', phone.ID, 'phone', phone.phone, 'ext', phone.ext, 'notes', phone.notes)) AS phoneList
FROM customer_info AS cust
LEFT JOIN phone_numbers AS phone ON phone.customerID = cust.ID
WHERE cust.ID = 1
GROUP BY cust.ID, cust.Name;
여기서 db<>fidle에서 테스트
언급URL : https://stackoverflow.com/questions/51890605/getting-multidimensional-array-from-right-table-results
반응형
'programing' 카테고리의 다른 글
PL/SQL: 테이블에서 연결 배열로 선택 (0) | 2023.08.24 |
---|---|
제출하기 전에 양식에 필드를 추가하는 방법은 무엇입니까? (0) | 2023.08.24 |
Mysql, 날짜 범위에서 파티셔닝이 작동하지 않습니다. (0) | 2023.08.24 |
배경 이미지와 색상을 함께 사용할 수 없는 이유는 무엇입니까? (0) | 2023.08.24 |
div의 내용을 백분율로 확대하시겠습니까? (0) | 2023.08.24 |