Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] consulta que contenga la suma de resultados de otra consulta

Estas en el tema de consulta que contenga la suma de resultados de otra consulta en el foro de PHP en Foros del Web. Tengo esto: SELECT proveedor,(SELECT sum(partidas.costo) FROM partidas where partidas.ncompra=12 GROUP BY ncompra) as costo,fecha FROM compra Funciona, el problema es que lo hace solo con ...
  #1 (permalink)  
Antiguo 20/11/2015, 22:05
Avatar de eduardohdz  
Fecha de Ingreso: noviembre-2015
Mensajes: 9
Antigüedad: 8 años, 5 meses
Puntos: 0
consulta que contenga la suma de resultados de otra consulta

Tengo esto:

SELECT proveedor,(SELECT sum(partidas.costo) FROM partidas where partidas.ncompra=12 GROUP BY ncompra) as costo,fecha FROM compra

Funciona, el problema es que lo hace solo con la constante, en lugar de ella quisiera saber como podría funcionar asi..

SELECT proveedor,(SELECT sum(partidas.costo) FROM partidas where partidas.ncompra=ncompra GROUP BY ncompra) as costo,fecha FROM compra

Que arroje el proveedor, SUMA DE LOS COSTOS DE LAS PARTIDAS QUE SE ENCUENTRAN EN OTRA TABLA, fecha. O si esa no es la forma correcta y existe alguna... podrian orientarme?

Si no me doy a entender... una disculpa. Gracias por su tiempo.. saludos
  #2 (permalink)  
Antiguo 20/11/2015, 22:43
Avatar de gonzaherrera77  
Fecha de Ingreso: noviembre-2015
Mensajes: 60
Antigüedad: 8 años, 5 meses
Puntos: 7
Respuesta: consulta que contenga la suma de resultados de otra consulta

Hola Eduardo que tal, podrias dejar el modelo entidad relacion de tu base de datos o bien poner las consultas aqui

http://sqlfiddle.com

¡Saludos!
  #3 (permalink)  
Antiguo 20/11/2015, 23:23
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: consulta que contenga la suma de resultados de otra consulta

Saludo.
Pues del mismo modo que se está sacando el sum, con otra subconsulta a la otra tabla, e imagino que entre la tabla partidas y la de compra (que imagino es de donde viene la fecha) hay campos que los relacionan, o incluso con un join entre estas.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #4 (permalink)  
Antiguo 21/11/2015, 08:24
Avatar de eduardohdz  
Fecha de Ingreso: noviembre-2015
Mensajes: 9
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: consulta que contenga la suma de resultados de otra consulta

Bueno... Tengo 2 tablas, una llmada "compras" y otra "partidas"
La tabla "compras" tiene los siguientes registro:

ncompra costoTotal proveedor fecha
1 100 ABC Dic 2014
2 350 ABC Dic 2015

La tabla "partidas" que guarda los precios de los artículos comprados esta asi:

npartida ncompra costo iva
1 1 50 10
2 1 50 0
3 2 250 15
4 2 100 10

Ahora bien quiero realizar una consulta que me mande el siguiente resultado:

ncompra costo sinIva conIva
1 100 50 50
2 350 0 350

Los dos ultimas columnas son las que no tengo idea de como sacarlas... suman el costo en partidas de registro que no tienen iva y de los que si tienen. Espero me entiendan :/ Muchas Gracias
  #5 (permalink)  
Antiguo 21/11/2015, 09:04
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: consulta que contenga la suma de resultados de otra consulta

Cita:
Iniciado por eduardohdz Ver Mensaje
Bueno... Tengo 2 tablas, una llmada "compras" y otra "partidas"
La tabla "compras" tiene los siguientes registro:

ncompra costoTotal proveedor fecha
1 100 ABC Dic 2014
2 350 ABC Dic 2015

La tabla "partidas" que guarda los precios de los artículos comprados esta asi:

npartida ncompra costo iva
1 1 50 10
2 1 50 0
3 2 250 15
4 2 100 10

Ahora bien quiero realizar una consulta que me mande el siguiente resultado:

ncompra costo sinIva conIva
1 100 50 50
2 350 0 350

Los dos ultimas columnas son las que no tengo idea de como sacarlas... suman el costo en partidas de registro que no tienen iva y de los que si tienen. Espero me entiendan :/ Muchas Gracias

Saludo
Teniendo en cuenta esa data, porque la compra 2 sale con sinIva en 0, pero la 1 con 50? Es decir, no me parece claro como se calculan esos datos, ya que comparando la info de la tabla partidas, pareciera que se quisiera mostrar el costo de cada transacciòn en la compra 1, pero en cambio en la compra 2 se muestra es el total...
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #6 (permalink)  
Antiguo 21/11/2015, 11:48
Avatar de eduardohdz  
Fecha de Ingreso: noviembre-2015
Mensajes: 9
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: consulta que contenga la suma de resultados de otra consulta

Bueno, muchas gracias :D, lo anterior es lo que debo hacer.. pero tratare de poner otro ejemplo para tratar de darme a entender... :)

TABLA 1
id datodetabla1
1 a

TABLA 2
id_padre dato
1 10
1 20
1 10


Con una sola consulta mostrar lo siguiente:

id datodetabla1 sumadatotabla2
1 a 40


¿Como seria una consulta para realizar esto?
Espero darme a entender... muchas gracias por su ayuda
  #7 (permalink)  
Antiguo 21/11/2015, 12:23
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: consulta que contenga la suma de resultados de otra consulta

epa prueba esto, claro adaptalo porque no lo he probado, pero serial algo asi:

Código PHP:
Ver original
  1. //tomamos el dato 1 - El limit va a depender de como vas a estructurar tu query
  2. $datoA = $db->query("SELECT id FROM tablaA ORDER BY id ASC LIMIT 1");
  3. $rowA = $datoA->fetch_assoc();
  4.  
  5.     //tomamos la info de la tabla 2
  6.     $datoB = $db->query("SELECT SUM(dato) as cantidad,dato FROM tablaB WHERE id = '$rowA[id]'");
  7.     $rowB = $datoB->fetch_assoc();
  8.  
  9. //imprimimos el resultado
  10. echo "La ID: ".$rowA['id']." tiene ".$rowB['cantidad']." Elementos";
__________________
[email protected]
HITCEL
  #8 (permalink)  
Antiguo 21/11/2015, 14:53
Avatar de eduardohdz  
Fecha de Ingreso: noviembre-2015
Mensajes: 9
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: consulta que contenga la suma de resultados de otra consulta

no me sirve, lo que pasa es que necesito obtener los datos solo con una consulta...
LA consulta que tengo es esta, por ejemplo:

SELECT id,(SELECT sum(tabla2.dato) FROM tabla2 where tabla2.id_padre= 1 GROUP BY dato) as sumadatostabla2,datodetabla1 FROM tabla1

Esta cosulta me arroja:

id - sumadatostabla2 - daodetabla1
1 - 40 - a

Eso es correcto... el problema que tengo es cuando en la tabla1 tengo mas datos con otro id y en la tabla2 tengo datos que pertenecen a ese id... cuando asi es quiero que los resultados de la consulta sean... ejemplo: Supononiendo que la tabla 1 contiene

TABLA 1
id - datodetabla1
1 - a
2 - b
3 - c

TABLA 2
id_padre - dato
1 - 10
1 - 20
1 - 10
2 - 35
2 - 35
3 - 50
3 - 50

------------El resultado en una sola consulta deberia arrojar-----------------------

id - sumadatostabla2 - daodetabla1
1 - 40 - a
2 - 100 - b
3 - 70 - c

----------------------------------------------------------
intente algo asi, cambiando la constante "1" por el id, pero marca error, creo no es la forma correcta para hacer lo que describo :/

SELECT id,(SELECT sum(tabla2.dato) FROM tabla2 where tabla2.id_padre= tabla1.id GROUP BY dato) as sumadatostabla2,datodetabla1 FROM tabla1


MUCHAS GRACIAS POR ORIENTARME, GRACIAS, SOY NUEVO EN EL FORO, SALUDOS A TODOS.. GRACIAS :D
  #9 (permalink)  
Antiguo 21/11/2015, 18:21
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: consulta que contenga la suma de resultados de otra consulta

lo que pasa con tu consulta es que la primera no cuenta ni agrupa las id para asi asignar los resultados de la segundo, prueba asi, pero si aun la quieres con una sola, habria que ver como hacerla, a mi no me ha salido com la quieres, pero intentare a ver:

Código PHP:
Ver original
  1. //tomamos el dato 1 - El limit va a depender de como vas a estructurar tu query
  2. $datoA = $db->query("SELECT COUNT(id) as raiz,id,datodetabla1 FROM tablaA GROUP BY id ORDER BY id ASC");
  3.  
  4. //aqui genero la lista de los elemtos encontrados, algo asi:
  5. /*  1
  6.     2
  7.     3
  8.     4
  9.     5*/
  10.    
  11. while($rowA = $datoA->fetch_array()){
  12.    
  13.     //tomamos la info de la tabla 2
  14.     $datoB = $db->query("SELECT SUM(dato) as cantidad,dato FROM tablaB WHERE id = '$rowA[raiz]'");
  15.     $rowB = $datoB->fetch_assoc();
  16.  
  17. //imprimimos el resultado
  18. echo $rowA['raiz']." - ".$rowB['cantidad']." - ".$rowA['datodetabla1'];
  19. /*El resultado deberia de ser algo asi:
  20.  
  21. 1   -   40  -   a
  22. 2   -   100 -   b
  23. 3   -   70  -   c
  24. */ 
  25. }
__________________
[email protected]
HITCEL
  #10 (permalink)  
Antiguo 22/11/2015, 01:07
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: consulta que contenga la suma de resultados de otra consulta

Saludo.
Podría ser con este query

Código SQL:
Ver original
  1. SELECT idtabla1, (SELECT SUM(campo) FROM tabla2 WHERE idtabla2 = idtabla1)
  2. FROM tabla1
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #11 (permalink)  
Antiguo 22/11/2015, 10:36
Avatar de eduardohdz  
Fecha de Ingreso: noviembre-2015
Mensajes: 9
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: consulta que contenga la suma de resultados de otra consulta

Pues efectivamente me funciono mortiprogramador.... con:
SELECT idtabla1, (SELECT SUM(campo) FROM tabla2 WHERE idtabla2 = idtabla1)
FROM tabla1
-----------------------------------------------------------------------------------------------
... Esta es la consulta aplicada al ejemplo:

SELECT id, (SELECT SUM(dato) FROM tabla2 WHERE tabla2.id_padre = tabla1.id) as sumadatostabla2, datodetabla1 FROM tabla1


RESULTADO:

id - sumadatostabla2 - datodetabla1
1 - 40 - a
2 - 100 - b
3 - 70 - c

------------------------------------------------------------------------------------------
MI ERROR estaba aqui:

WHERE tabla2.id_padre = tabla1.id

Yo lo hacia asi:
WHERE tabla2.id_padre = id

-----------------------------------------------------------------------------------------
FUERA DEL EJEMPLO QUE PUSE, ESTA ES PARTE DE LA CONSULTA CON LA QUE INICIE CON EL PROBLEMA:

SELECT proveedor,(SELECT sum(partidas.costo) FROM partidas where partidas.ncompra=ncompra GROUP BY ncompra) as costo,fecha FROM compra


y el mensaje de error: "Subquery returns more than 1 row"

-------------------------------------------------------------------------------------------

MUCHISIMAS GRACIAS POR AYUDARME... mortiprogramador,xfxstudios,gonzaherrera77

Saludos!!

Etiquetas: fecha, resultados, select, suma, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:14.