子请求MySQL
我尝试执行的子请求被阻止,但我就是不知道如何执行。 我有4张桌子:子请求MySQL,mysql,sql,subquery,Mysql,Sql,Subquery,我尝试执行的子请求被阻止,但我就是不知道如何执行。 我有4张桌子: jos_vm_products=>存储的所有产品 jos_vm_order_items=>订单中的项目 jos_vm_order=>订单 stock\u web\u brut=>我的产品的库存 我想获得特定产品的所有信息: 库存数量(已完成) 表jos_vm_products(完成)中的产品信息 特定产品的“待定”订单数(已冻结) 这是我的第一个要求: SELECT `product_id` , `product_w
- jos_vm_products=>存储的所有产品
- jos_vm_order_items=>订单中的项目
- jos_vm_order=>订单
- stock\u web\u brut=>我的产品的库存
- 库存数量(已完成)
- 表jos_vm_products(完成)中的产品信息
- 特定产品的“待定”订单数(已冻结)
SELECT `product_id` , `product_weight` , `cdate` , `mdate` , `product_name` , `product_sales` , `product_sku` , `product_in_stock` , SUM( stock_bloque ) AS 'stock_bloque', SUM( stock_total ) AS 'stock_total', SUM( stock_vente ) AS 'stock_vente', ref
FROM jos_vm_product t1
INNER JOIN `stock_web_brut` t2 ON t1.product_sku LIKE CONCAT( t2.ref, '%' )
GROUP BY product_id;
我想我应该做这样的子请求:
SELECT
(
SELECT COUNT(t5.product_id)
FROM jos_vm_product t5
INNER JOIN jos_vm_order_item t6 ON t5.product_id = t6.product_id
WHERE order_status = 'P' AND t5.product_id = 12
) AS "nombre_produit_pending",
`product_id` ,
`product_weight` ,
`cdate` , `mdate` ,
`product_name` ,
`product_sales` ,
`product_sku` ,
`product_in_stock` ,
SUM( stock_bloque ) AS 'stock_bloque',
SUM( stock_total ) AS 'stock_total',
SUM( stock_vente ) AS 'stock_vente',
ref
FROM jos_vm_product t1
INNER JOIN `stock_web_brut` t2 ON t1.product_sku LIKE CONCAT( t2.ref, '%' )
GROUP BY product_id
而不是«12»,我想我应该做一些类似的事情:
WHERE order_status = 'P' AND t5.product_id = t1.product_id
但我有一个循环
以下是表格:(我不能发布图片)
对于结果来说,应该是这样的:
`product_id` | [...] | 'number_of_orders_in_pending_for_this_product' |
12 | [...] | 15
13 | [...] | 5
14 | [...] | 3
如果有人有主意
Kai23在这种情况下,您使用的子选择有点错误。使用
左侧外部联接中的子选择,如下所示:
SELECT
`nombre_produit_pending`.`count`
`product_id` ,
`product_weight` ,
`cdate` , `mdate` ,
`product_name` ,
`product_sales` ,
`product_sku` ,
`product_in_stock` ,
SUM( stock_bloque ) AS 'stock_bloque',
SUM( stock_total ) AS 'stock_total',
SUM( stock_vente ) AS 'stock_vente',
ref
FROM jos_vm_product t1
INNER JOIN `stock_web_brut` t2 ON t1.product_sku LIKE CONCAT( t2.ref, '%' )
LEFT OUTER JOIN (select count(t5.product_id) as count, t5.product_id as pid FROM jos_vm_product t5
INNER JOIN jos_vm_order_item t6 ON t5.product_id = t6.product_id
WHERE order_status = 'P'
) AS nombre_produit_pending ON nombre_produit_pending.pid = t1.product_id
GROUP BY product_id
PS!我没有检查您的数据库结构和查询,我只是按照不同的顺序复制了您自己的查询,因此如果您从mysql中得到任何错误,我可以帮助您将其排序:)
关键是,子选择应该查询所有未决订单并按ID对它们进行分组(返回值为2:ID
和count
),因此您可以将子结果与其ID连接起来,并将相应的计数作为一个值 多亏了tiit,这里是最后的请求:
SELECT
`nombre_produit_pending`.`count`,
`product_id` ,
`product_weight` ,
`cdate` , `mdate` ,
`product_name` ,
`product_sales` ,
`product_sku` ,
`product_in_stock` ,
SUM( stock_bloque ) AS 'stock_bloque',
SUM( stock_total ) AS 'stock_total',
SUM( stock_vente ) AS 'stock_vente',
ref
FROM jos_vm_product t1
INNER JOIN `stock_web_brut` t2 ON t1.product_sku LIKE CONCAT( t2.ref, '%' )
LEFT OUTER JOIN (SELECT COUNT(t5.product_id) AS count, t5.product_id AS pid FROM jos_vm_product t5
INNER JOIN jos_vm_order_item t6 ON t5.product_id = t6.product_id
WHERE order_status = 'P'
GROUP BY t5.product_id
) AS nombre_produit_pending ON nombre_produit_pending.pid = t1.product_id
GROUP BY product_id
你能提供你的桌子结构吗?另外,您的预期结果是什么?您好,这里有一个完整表格的链接:对于结果,它类似于:product\u id
,[…]“stock\u total”,“stock\u vente”,“此产品的订单数量”我很高兴您能让它工作:)如果有帮助,请将此帖子标记为解决方案。