我需要从MySQL输出5个数字。它必须在一个查询中。
我有一个名为recursos_humanos的表。
我需要的第一个数字是recursos_humanos中分配给一个特定项目的每一行的“monto”列的SUM。
以下是你如何获得每一行的所有'monto'。
SELECT `recursos_humanos`.`monto`
FROM `recursos_humanos`,
`recursos_asignados`
WHERE `recursos_humanos`.`id`=`recursosh_asignados`.`recursoID`
AND `recursosh_asignados`.`proyectoID`=’1’
我需要的第二个数字来自表“recursos”。我希望“recursos”中每一行的“monto”列的SUM分配给一个特定的proyect(是的,与第一个相同,但区别在于你不需要内部连接来获取值)< / p>
以下是“recursos”
中每行的所有“monto”SELECT `recursos`.`monto`
FROM `recursos`
WHERE proyecto='1'
第三个数字是第一个数字+第二个数字+'mano_de_obra'。
您使用此查询获得'mano_de_obra':
SELECT `proyecto`.`mano_de_obra`
FROM `proyecto`
WHERE `did`='1'
第四个数字是'mano_de_obra'所以你得到它就像我在第三点告诉你的那样。
最后一个数字是:第三个数字%第四个数字
提前感谢您的帮助:)
答案 0 :(得分:2)
假设您的基本查询是正确的,如果您只使用一些Variables和旧时尚UNION,解决方案很简单。
变量将使我们更容易依赖于我们过去所做的数字,例如第三种情况,其中数字等于第一个+第二个+另一个,最后一个情况是第三个数字%第四个。
使用UNION
语句会将多个SELECT
语句的结果合并为一个结果。
我注意到在您提供的SQL中,在找到正确的列后没有使用SUM()
。我添加了我认为有必要的地方。
SET @One = (SELECT SUM(`recursos_humanos`.`monto`)
FROM `recursos_humanos`,`recursos_asignados`
WHERE `recursos_humanos`.`id`=`recursosh_asignados`.`recursoID`
AND `recursosh_asignados`.`proyectoID`=’1’);
SET @Two = (SELECT SUM(`recursos`.`monto` )
FROM `recursos`
WHERE proyecto='1');
SET @Four = (SELECT `proyecto`.`mano_de_obra`
FROM `proyecto`
WHERE `did`='1');
SET @Three = (@Four + @One + @Two);
SET @Five = (SELECT MOD(@Three, @Four));
SELECT @One
UNION ALL
SELECT @Two
UNION ALL
SELECT @Three
UNION ALL
SELECT @Four
UNION ALL
SELECT @Five