SELECT
productos.prod_id,
productos.prod_codigo1,
productos.prod_descripcion,
(SELECT SUM(cotdetalle.cotd_cantidad)
FROM cotdetalle
WHERE cotdetalle.cotd_codigo = productos.prod_codigo1
AND cotdetalle.cotd_cote_id IN(
SELECT cotencabezado.cote_id
FROM cotencabezado
WHERE cotencabezado.cote_status = 'cerrada'
AND MONTH(cotencabezado.cote_cierre) = MONTH(NOW()) AND YEAR(cotencabezado.cote_cierre) = YEAR(NOW())
)
) AS cuantos,
(SELECT SUM(cotdetalle.cotd_cantidad * cotdetalle.cotd_precio)
FROM cotdetalle
WHERE cotdetalle.cotd_codigo = productos.prod_codigo1
AND cotdetalle.cotd_cote_id IN(
SELECT cotencabezado.cote_id
FROM cotencabezado
WHERE cotencabezado.cote_status = 'cerrada'
AND MONTH(cotencabezado.cote_cierre) = MONTH(NOW()) AND YEAR(cotencabezado.cote_cierre) = YEAR(NOW())
)
) AS monto
FROM productos
ORDER BY monto DESC
LIMIT 0, 50
昨晚提出了这个问题,我想我的问题是:是不是太多了?我很确定还有其他方法可以在没有所有嵌套查询的情况下获得相同的结果。它可以工作,但在我的开发环境中需要一些时间,我敢打赌在生产环境中需要更多时间......任何建议? 如果您需要表格结构,请告诉我...
编辑:实际上第二个 SELECT 是最困扰我的,它与第一个完全相同,但我需要第二个结果,但是如果我尝试在第一个 SELECT 中获得第二个结果,它会给我“操作数应该包含 1列”错误...
更多信息:我需要能够通过 monto、cuantos、productos.prod_codigo1、productos.prod_descripcion 订购
sqlfiddle.com 示例:http ://sqlfiddle.com/#!2/c4391/1