여러 테이블에서 선택 - 1 대 다 관계
이런 테이블이 있습니다.
테이블 제품
[ID | 이름]
테이블 이미지
[ Product _ Id | URL | 주문번호]
테이블 가격
[제품 ID | 조합 | 통화 | 가격]
표 수량
[제품 ID | 조합 | 수량]
테이블 제품은 다른 테이블과 일대다로 관련되어 있습니다.테이블을 쿼리하여 다음과 같은 결과를 얻을 필요가 있습니다(의사 배열).
[
ProductId: 1,
Name: 'Sample product',
Images: [
[url, 1],
[url, 2]
],
Prices: [
[aaa, USD, 50.00],
[aaa, EUR, 50.00],
[bbb, USD, 59.00],
[bbb, EUR, 59.00]
],
Quantities: [
[aaa, 5],
[bbb, 3]
]
]
현재 제가 하고 있는 방법은 다음과 같습니다.모든 제품을 조회하고 ID를 나열한 다음 각 테이블(이미지, 가격, 수량)을 조회합니다.WHERE IN
절을 클릭합니다.모든 데이터가 있으면 원하는 구조를 얻기 위해 php의 테이블을 해석하기 시작합니다.
이러한 데이터를 추출할 수 있는 더 좋은 방법이 없을까 생각합니다.이러한 테이블은 여러 가지가 있습니다만, 각각의 설정 파서를 작성하는 것은 다소 번거롭고 문제가 있습니다.mysql이 저에게 부담을 줄 가능성은 없습니까?
감사해요.
이 쿼리는 다음과 같은 기능을 제공합니다.
SELECT product.id, product.name,
(SELECT group_concat(CONCAT('["',images.url, '",', images.order_number,']')) FROM images WHERE images.product_id = product.id GROUP BY (product.id)) AS IMAGES_LIST,
(SELECT GROUP_CONCAT(CONCAT('["',prices.combination, '","', prices.currency, '",', prices.price,"]" )) FROM prices WHERE prices.product_id = product.id GROUP BY (product.id)) AS PRICE_LIST,
(SELECT GROUP_CONCAT(CONCAT('["',quantites.combination, '",', quantites.quantity,"]")) FROM quantites WHERE quantites.product_id = product.id GROUP BY (product.id)) AS Quantity_LIST
FROM product WHERE product.id = 1
- 먼저 제품을 입수하다
- 서브패킷을 사용하는 각자에 대해 관련 이미지를 얻을 수 있으며 그룹 콘캣을 사용하여 하나의 필드에서 이미지를 얻을 수 있습니다.
- 가격과 양에 있어서 같은 것
외부 키를 설정하면 사용이 더 간편해집니다(또한 더 효율적입니다).JOIN
보다WHERE ... IN ...
.
필요한 데이터를 얻기 위해 테이블을 개별적으로 쿼리할 수 있습니다.Product Id = 1
다음과 같습니다.
SELECT i.*
FROM Product prd
INNER JOIN Images i
ON prd.Id = i.Product_Id
WHERE Product_Id = 1;
SELECT prc.*
FROM Product prd
INNER JOIN Prices prc
ON prd.Id = prc.Product_Id
WHERE Product_Id = 1;
SELECT q.*
FROM Product prd
INNER JOIN Quantities q
ON prd.Id = q.Product_Id
WHERE Product_Id = 1;
제품에 대한 이러한 모든 정보를 포함하는 단일 결과 세트를 사용하는 것이 좋습니다.PHP로 식별하여 해석합니다.그렇게 하면 일이 더 간단해질 거야.
SELECT prd.ProductId, prd.Name, i.Url, i.Ordernumber, prc.Combination, prc.Currency, prc.Price,q.Combination, q.Quantity FROM Product prd INNER JOIN Images i ON prd.Id = i.Product_Id INNER JOIN Prices prc ON prd.Id = prc.Product_Id INNER JOIN Quantities q ON prd.Id = q.Product_Id WHERE Product_Id = 1;
언급URL : https://stackoverflow.com/questions/39523580/select-from-multiple-tables-one-to-many-relation
'programing' 카테고리의 다른 글
React.js에서 컴포넌트의 소품을 갱신할 수 있습니까? (0) | 2022.11.17 |
---|---|
JHipster 6.0.1: 리퀴베이스 태스크 실패 (0) | 2022.11.17 |
Python 운영체제는 어떻게 확인하나요? (0) | 2022.11.17 |
Python의 ISO 시간(ISO 8601) (0) | 2022.11.08 |
안드로이드:Dex는 버전 52 바이트 코드를 구문 분석할 수 없습니다. (0) | 2022.11.08 |