Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql从2个表中选择具有多个子产品的产品_Mysql_Sql_Select - Fatal编程技术网

MySql从2个表中选择具有多个子产品的产品

MySql从2个表中选择具有多个子产品的产品,mysql,sql,select,Mysql,Sql,Select,我正在尝试从我的webshop MySQL数据库中的订单中选择产品 这是我试图从中获取信息的两个表的结构 表订购产品: |订单|产品|标识|订单|标识|产品|标识|名称|型号|数量|价格|总价| |63072 | uuuuuuuuuuuuuuu124; 41761 u124; 4022 uuu124;产品1 | P001 | 2 u124; uuuu124; 23.95 | 47.90 | 订单/产品/选项表: |订单号|订单号|产品号|产品号|名称|价格| |41761 uuu124; 630

我正在尝试从我的webshop MySQL数据库中的订单中选择产品

这是我试图从中获取信息的两个表的结构

表订购产品:
|订单|产品|标识|订单|标识|产品|标识|名称|型号|数量|价格|总价|
|63072 | uuuuuuuuuuuuuuu124; 41761 u124; 4022 uuu124;产品1 | P001 | 2 u124; uuuu124; 23.95 | 47.90 |

订单/产品/选项表:
|订单号|订单号|产品号|产品号|名称|价格|
|41761 uuu124; 63072 uuuuuuuuuuu124; 4022 uuuuuuuuuuuuu124;选项1 | 0.90 124;
|41761?63072?4022?选项2?3.25?
|41761?63072?4022?选项3?5.90?

我需要使用select查询在一个概览中获取order_产品及其所有选项,但我无法使用一个产品的多个选项

这就是我目前所拥有的

(SELECT
`order_product_id`, 
`order_id`,
`product_id`,
`name`,
`model`,
`quantity`,
`price`,
`total`
FROM `order_product`
WHERE `order_id` = 41761)
UNION (SELECT
0 AS order_product_id,
T1.`order_id`,
0 AS product_id,
T1.`name`,
'option' AS model,
T2.`quantity`,
T1.`price`,
SUM(T1.`price` * T2.`quantity`) AS total
FROM `order_product_option` T1
INNER JOIN `order_product` T2 ON T1.`order_product_id` = T2.`order_product_id`
WHERE T1.`order_id` = 41761)
本声明的结果:
|订单|产品|标识|订单|标识|产品|标识|名称|型号|数量|价格|总计| |
|63072 | | | | | | 41761 | | 4022 | |产品1 | P001 | 2 | | | 23.95 | 47.90 |
|0 uuuuuuuuuuuuuuuuuuuuuu124; 41761 uu124; 0 uuuuuuuuu124;选项1 124;选项2 uuuuuuu124; 0.90 | 10.05 |

但我希望结果是:
|订单|产品|标识|订单|标识|产品|标识|名称|型号|数量|价格|总计| |
|63072 | | | | | | 41761 | | 4022 | | |产品1 | P001 | | 2 | | | 23.95 | 47.90 |
|0 uuuuuuuuuuuuuuuuuuuuuu124; 41761 uu124; 0 uuuuuuuuu124;选项1 124;选项2 uuuuuu124; 0.90 124; 1.80 124;
|0 uuuuuuuuuuuuuuuuuuuu124; 41761 uu124; 0 uuuuuuuuu124;选项2 124;选项2 u124; uuuuu124; 3.25 124; 6.50 124;
|0uuuuuuuuuuuuuuuuuuuuu124; 417610uuuuuuuuuuu124;选项3选项2uuuuuuu124; 5.9011.80 |

它只选择on选项,总价不正确。
如何修复它,使其以正确的价格选择所有选项?

尝试此版本:

(SELECT `order_product_id`, `order_id`, `product_id`, `name`,
        `model`, `quantity`, `price`, `total`
 FROM `order_product`
 WHERE `order_id` = 41761
)
UNION ALL
(SELECT 0 AS order_product_id, T1.`order_id`, 0 AS product_id, T1.`name`,
        'option' AS model, T2.`quantity`, T1.`price`, T1.`price` * T2.`quantity` AS total
 FROM `order_product_option` T1 INNER JOIN
      `order_product` T2
       ON T1.`order_product_id` = T2.`order_product_id`
 WHERE T1.`order_id` = 41761
)
查询的问题是第二个子查询有一个
sum()
函数。这会将查询转换为返回一行的聚合查询。您不需要聚合


顺便说一下,大多数数据库都会生成编译器错误,因为
select
中有许多列不在
groupby
中(因为没有
groupby
)。MySQL扩展了SQL以允许这种构造。

是!成功了。非常感谢你!