gpt4 book ai didi

mysql - 从多个表中选择 - 一对多关系

转载 作者:可可西里 更新时间:2023-11-01 06:47:35 25 4
gpt4 key购买 nike

我有这样的表:

表格产品

[ 编号 |姓名]

表格图片

[ 产品编号 |网址 |订单号]

表价

[ 产品编号 |组合 |货币 |价格]

表格数量

[ 产品编号 |组合 |数量]


表产品与其他表是一对多的关系。我需要查询表并得到类似这样的结果(伪数组):

[
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
  • 先拿到产品
  • 对于每个使用子查询的图片,我们获取相关图片,使用组连接,我们可以在一个字段中获取它们
  • 价格和数量相同

Query Result

关于mysql - 从多个表中选择 - 一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39523580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com