Mysql SQL从具有最大/最小字段的行获取字段
所以有一个学校项目,我完全停留在最后一步。 这是我的密码:Mysql SQL从具有最大/最小字段的行获取字段,mysql,sql,Mysql,Sql,所以有一个学校项目,我完全停留在最后一步。 这是我的密码: SELECT Consumidor.numero, Soma.soma FROM Consumidor JOIN (SELECT compra.consumidor, SUM(Eco.eco*compra.quantidade) as soma FROM compra JOIN (SELECT composto.produto, composto.prodMarca, Produto.nome, sum
SELECT Consumidor.numero, Soma.soma
FROM Consumidor
JOIN
(SELECT compra.consumidor, SUM(Eco.eco*compra.quantidade) as soma
FROM compra
JOIN
(SELECT composto.produto, composto.prodMarca, Produto.nome,
sum(Elemento.pegadaEcologica * composto.percentagem/100) AS eco
FROM composto
JOIN Produto
ON composto.produto = Produto.codigo
AND composto.prodMarca = Produto.marca
JOIN Elemento
ON composto.elemento = Elemento.codigo
GROUP BY composto.produto, composto.prodMarca) Eco
ON compra.produto = Eco.produto AND compra.prodMarca = Eco.prodMarca
GROUP BY compra.consumidor) Soma
ON Consumidor.numero = Soma.Consumidor
现在我有了一个类似于:
Consumidor.number Soma.soma
123 90
456 70
789 70
预期结果应为Consumidor.number-s,其中Soma.Soma为min
即,对于本表,结果应为:
Consumidor.number
456
789
此查询中使用的所有表都有原始架构:
Consumidor (PK numero, email, sexo, nascimento)
Elemento (PK codigo, nome, pegadaEcologica, saude)
Produto (PK codigo, FK PK Marca.numero marca, nome, tipo, comercioJusto)
compra (FK PK Produto.codigo produto, FK PK Produto.marca prodMarca, Consumidor.numero, quantidade)
composto (FK PK Produto.codigo produto, FK PK Produto.marca prodMarca, FK PK Elemento.codigo elemento, percentagem)
更新。
我没有坚持解决方案-有解决方案:
SELECT Consumidor.numero, Soma.soma
FROM Consumidor
JOIN
(SELECT compra.consumidor, SUM(Eco.eco*compra.quantidade) as soma
FROM compra
JOIN
(SELECT composto.produto, composto.prodMarca, Produto.nome,
sum(Elemento.pegadaEcologica * composto.percentagem/100) AS eco
FROM composto
JOIN Produto
ON composto.produto = Produto.codigo
AND composto.prodMarca = Produto.marca
JOIN Elemento
ON composto.elemento = Elemento.codigo
GROUP BY composto.produto, composto.prodMarca) Eco
ON compra.produto = Eco.produto AND compra.prodMarca = Eco.prodMarca
GROUP BY compra.consumidor) Soma
ON Consumidor.numero = Soma.Consumidor
WHERE Soma.soma <= ALL
(SELECT SUM(Eco.eco*compra.quantidade) as soma
FROM compra
JOIN
(SELECT composto.produto, composto.prodMarca, Produto.nome,
sum(Elemento.pegadaEcologica * composto.percentagem/100) AS eco
FROM composto
JOIN Produto
ON composto.produto = Produto.codigo
AND composto.prodMarca = Produto.marca
JOIN Elemento
ON composto.elemento = Elemento.codigo
GROUP BY composto.produto, composto.prodMarca) Eco
ON compra.produto = Eco.produto AND compra.prodMarca = Eco.prodMarca
GROUP BY compra.consumidor)
只需将整个Soma查询放在WHERE子句上。有了这个,我得到了预期的结果。但这看起来很难看,我在寻找更优雅的方式
注意:不要扔西红柿-在项目陈述之后,我不能在FROM子句中使用子查询,但如果对我的整个代码有一些观察,我将不胜感激。因此,没有真正的其他方法来解决它
SELECT Consumidor.numero
FROM compra
JOIN Consumidor
ON compra.consumidor = Consumidor.numero
JOIN
(SELECT composto.produto, composto.prodMarca, Produto.nome,
sum(Elemento.pegadaEcologica * composto.percentagem/100) AS eco
FROM composto
JOIN Produto
ON composto.produto = Produto.codigo
AND composto.prodMarca = Produto.marca
JOIN Elemento
ON composto.elemento = Elemento.codigo
GROUP BY composto.produto, composto.prodMarca) Eco
ON compra.produto = Eco.produto AND compra.prodMarca = Eco.prodMarca
GROUP BY compra.consumidor
HAVING SUM(Eco.eco*compra.quantidade)<= ALL
(SELECT SUM(Eco.eco*compra.quantidade)
FROM compra
JOIN Consumidor
ON compra.consumidor = Consumidor.numero
LEFT JOIN Dependente
ON Dependente.consumidor = Consumidor.numero
JOIN
(SELECT composto.produto, composto.prodMarca, Produto.nome,
sum(Elemento.pegadaEcologica * composto.percentagem/100) AS eco
FROM composto
JOIN Produto
ON composto.produto = Produto.codigo
AND composto.prodMarca = Produto.marca
JOIN Elemento
ON composto.elemento = Elemento.codigo
GROUP BY composto.produto, composto.prodMarca) Eco
ON compra.produto = Eco.produto
AND compra.prodMarca = Eco.prodMarca
GROUP BY compra.consumidor);
要从当前表中获取具有最小值的字段,您必须在HAVING子句check中查询整个表,检查哪个组的COMPAS总和小于或等于当前表中所有组的COMPAS总和。
它可以标记为任何可能问题的副本。您知道当前from子句包含子选择,对吗?请包含一些示例输入和输出数据。@Jacobm001我的意思是不允许有fromselect…之类的选择,我的所有子选择现在都在联接中clause@TimBiegeleisen你对什么感兴趣?我已经包括了我当前代码的输出表和一些操作后的预期输出,这些操作是关于您有一个双重嵌套查询的,我无法在脑海中分解这个问题。你需要明白我们没有你的数据。