如何在一个mysql查询中获得所有这些结果?

时间:2013-11-17 19:55:25

标签: mysql sql

我需要从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'所以你得到它就像我在第三点告诉你的那样。

最后一个数字是:第三个数字%第四个数字

提前感谢您的帮助:)

1 个答案:

答案 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