[MYSQL] Sumar valores de una consulta

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • CcCamikaze
    Langosta espía
    • 28-04-2003
    • 45790

    #1

    [MYSQL] Sumar valores de una consulta

    ok tengo una consulta que me tira la siguiente data:



    Esta es la consulta:

    Código:
    $plan_comments = mysql_query("
    
    SELECT sum( 1 ) , cant_comments
    FROM ( 
    
    SELECT sum( 1 ) AS cant_comments, id_plantilla_origen
    FROM plantillas_coments , plantillas
    WHERE year( plantillas_coments.fechacoment ) =$anio
    AND month( plantillas_coments.fechacoment ) =$mes
    AND plantillas.plan_Id = plantillas_coments.id_plantilla_origen
    GROUP BY id_plantilla_origen
    
    )selc
    GROUP BY cant_comments
    
    ") or die(mysql_error());
    pero quiero que me sume los comentarios, o sea quiero me diga (en este ejemplo) "Hay 7 Coemntarios."

    todo esto ta en un while lokito. pero me tira solo linea por linea cada valor.. quiero todos sumados y nno se como

    ayudin?
  • judío ginger daywalker petiso
    Pelotudo
    • 14-03-2005
    • 16758

    #2
    le pusiste que agrupe por cant_comments. y cant_comments se calcula en el select interno como la suma de cada uno.

    por lo tanto, en el externo le estas pidiendoq ue sume todos las plantillas con 1 comment, todas las que tienen 2, todas las que tienen 3, etc.

    es decir: no hace falta un group by en el select externo, solo en el interno.

    deberia quedar
    Código:
    SELECT sum( 1 ) AS total_comments
    FROM ( 
    
    SELECT sum( 1 ) AS cant_comments, id_plantilla_origen
    FROM plantillas_coments , plantillas
    WHERE year( plantillas_coments.fechacoment ) =$anio
    AND month( plantillas_coments.fechacoment ) =$mes
    AND plantillas.plan_Id = plantillas_coments.id_plantilla_origen
    GROUP BY id_plantilla_origen
    
    )
    aunque es mucho mas comodo que no uses numeros sino el nombre del campo.

    K
    Editado por última vez por judío ginger daywalker petiso; 16-03-2009, 04:29 PM.

    Comentario

    • Nichiren
      eme encantanta vababa am
      • 24-12-2006
      • 33

      #3
      los resultados por separados son una suerte de "DISTINCT", solo que te los muestra distintos porque asi es tu consulta, yo laburo mas con SQL (que con MySQL) pero no podes hacer un UNION o un UNION ALL?, se me ocurre intentando poner el union antes del

      Código:
      SELECT sum( 1 ) AS cant_comments, id_plantilla_origen
      FROM plantillas_coments , plantillas
      WHERE year( plantillas_coments.fechacoment ) =$anio
      AND month( plantillas_coments.fechacoment ) =$mes
      AND plantillas.plan_Id = plantillas_coments.id_plantilla_origen
      GROUP BY id_plantilla_origen
      fijate si te sale algo, sino despues veo de crarme un par de tablas y jugar con MySql y los union.

      EDIT: Tiene razon kkkkkk, estas sumando todo al pedo..
      Editado por última vez por Nichiren; 16-03-2009, 04:33 PM.

      Comentario

      • CcCamikaze
        Langosta espía
        • 28-04-2003
        • 45790

        #4
        Originalmente publicado por Kremar
        por lo tanto, en el externo le estas pidiendo que sume todos las plantillas con 1 comment, todas las que tienen 2, todas las que tienen 3, etc.

        claro esta bien esa parte, lo que necesito es que me diga la cantidad de comentarios que hay, en ejemplo que puse hay 7 pero no se como sumarlos y extraerlos de la consulta.

        Comentario

        • judío ginger daywalker petiso
          Pelotudo
          • 14-03-2005
          • 16758

          #5
          a todo esto, en el select de adentro estas metiendo la tabla "plantillas" totalmente al pedo.
          se ve que quisiste levantar el nombre o algo inicialmente pero dps lo sacaste, asi que no hace falta que hagas ese join ilegal.


          camicaze: lee lo que te dije.
          el flaco de adentro te escupe una linea por plantilla, con su cantidad de coments.

          vos dps estas agrupando por cantiad de coments!!

          x ejemplo, si el primer select te escupe
          id_plantilla - comments
          1 - 4
          2 - 5
          3 - 5
          4 - 1
          5 - 1
          6 - 1

          al agrupar por commets estas pidiendole que te sume todas las de 4 comments, todas las de 5 y todas las de 1, te escupiria
          suma - cant_commetns
          4 - 4
          10 - 5
          3 - 1

          creo que ni entendes lo que estas haciendo.... TENES QUE SACAR EL GROUP BY cant_comments en el select externo.

          K
          Editado por última vez por judío ginger daywalker petiso; 16-03-2009, 05:05 PM.

          Comentario

          • CoyoteX
            Son Goku
            • 16-09-2005
            • 17784

            #6
            es que le estas poniendo 1, donde tendrias que ponerle el nombre del campo

            Comentario

            • judío ginger daywalker petiso
              Pelotudo
              • 14-03-2005
              • 16758

              #7
              eso ya se lo comente. el 1 debe ser el numero interno del field, y al parecer anda (sino no sumaria 4 en el select de adentro, ni llegaria a esos 3 registros con 1, 2 y 4 del primer sum).

              K

              Comentario

              • klaus?
                >>>
                • 10-09-2004
                • 1247

                #8
                Si tenes un campo con auto increment, fijate si te sirve una cosa así (no sé casi nada de SQL fdsf.)
                Código PHP:
                $test=mysql_query("select * from ID ORDER BY id DESC LIMIT 1"); 
                
                ID vendría ser el campo, lo que hace eso es devolver el valor máximo... aunque bueno, si tenes muchos comentarios como que es una sobrecarga al pedo o si no, había una función llamada MAX o algo así (ngg ni idea)

                Para mí, el valor máximo vendría hacer el último comentario fdsf.. si va por orden creciente.

                No te aseguro que esté bien, así lo tengo en otro lado.. a penas empezé con SQL.

                Edit: entendí cualquier cosa, no te sirve esto.
                Editado por última vez por klaus?; 16-03-2009, 05:14 PM.

                Comentario

                • CcCamikaze
                  Langosta espía
                  • 28-04-2003
                  • 45790

                  #9
                  ahi me dio lo que necesitaba



                  Código:
                  SELECT sum(cant_comments) AS cacho
                  FROM ( 
                  
                  SELECT sum( 1 ) AS cant_comments, id_plantilla_origen
                  FROM plantillas_coments , plantillas
                  WHERE year( plantillas_coments.fechacoment ) =$anio
                  AND month( plantillas_coments.fechacoment ) =$mes
                  AND plantillas.plan_Id = plantillas_coments.id_plantilla_origen
                  GROUP BY id_plantilla_origen
                  
                  )selc
                  Gracias por su ayuda amiguines

                  Comentario

                  • MoaLaiSkirulais
                    ^^(V)^^
                    • 08-07-2003
                    • 23268

                    #10
                    lei muy por arriba
                    supongo que cuando la planilla tiene cero comentarios no sale en el reporte
                    lo dejo como un ALERT y me voy

                    Comentario

                    Trabajando...