Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Como crear consulta mysql para que me devuelva la suma de dos valores

Estas en el tema de Como crear consulta mysql para que me devuelva la suma de dos valores en el foro de Mysql en Foros del Web. hola muy buenas, soy nuevo en esto de php y mysql, les explico lo que intento hacer, quiero sumar dos campos de diferentes tablas, lo ...
  #1 (permalink)  
Antiguo 29/04/2012, 18:31
 
Fecha de Ingreso: abril-2012
Ubicación: Quito
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Como crear consulta mysql para que me devuelva la suma de dos valores

hola muy buenas, soy nuevo en esto de php y mysql, les explico lo que intento hacer, quiero sumar dos campos de diferentes tablas, lo unico que las relaciona es la fecha, se tengo datos para las dos tablas en la misma fecha me da el resultado ok, pero se en una de las dos tablas para la fecha indicada no contiene datos no me da ningun resultado, desde ya agradezco vuestra ayuda.

Esta es la consulta:

$sel_resultado="SELECT CONCAT('$ ',SUM(DISTINCT cobros_ab.importe) + SUM(DISTINCT entradas.importe)) AS TOTAL_INGRESOS FROM cobros_ab,entradas WHERE cobros_ab.fechacobro='$fechainicio' AND entradas.fechacobro='$fechainicio'";
$res_resultado=mysql_query($sel_resultado);
  #2 (permalink)  
Antiguo 30/04/2012, 01:38
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Como crear consulta mysql para que me devuelva la suma de dos valores

Código MySQL:
Ver original
  1.                            SUM(DISTINCT cobros_ab.importe)
  2.                           + SUM(DISTINCT entradas.importe)) AS TOTAL_INGRESOS
  3. FROM cobros_ab,
  4.           entradas
  5. WHERE cobros_ab.fechacobro='$fechainicio' AND entradas.fechacobro='$fechainicio'";

Si no especificas el tipo de join esta emparejando solo los registros que existan en las dos tablas

esto es lo que estas haciendo pero con una sintaxis mas actual

cobros_ab INNER JOIN entradas ON cobros_ab.fechacobro=entradas.fechacobro WHERE cobros_ab.fechacobro='$fechainicio'

Esto nos daria TODOS los registros de cobros_ab sumados con los que haya de entradas

cobros_ab LEFT JOIN entradas ON cobros_ab.fechacobro=entradas.fechacobro WHERE cobros_ab.fechacobro='$fechainicio'

Esto lo contrario....

entradas LEFT JOIN cobros_ab ON cobros_ab.fechacobro=entradas.fechacobro WHERE cobros_ab.fechacobro='$fechainicio'

Código MySQL:
Ver original
  1. SELECT CONCAT('$ ',SUM(DISTINCT cobros_ab.importe + DISTINCT entradas.importe)) AS TOTAL_INGRESOS
  2. FROM cobros_ab LEFT JOIN entradas
  3. ON cobros_ab.fechacobro=entradas.fechacobro
  4. WHERE cobros_ab.fechacobro='$fechainicio';

Código MySQL:
Ver original
  1. SELECT cobros_ab.fechacobro,
  2. CONCAT('$ ',SUM(DISTINCT cobros_ab.importe + DISTINCT entradas.importe)) AS TOTAL_INGRESOS
  3. FROM cobros_ab LEFT JOIN entradas
  4. ON cobros_ab.fechacobro=entradas.fechacobro
  5. GROUP BY cobros_ab.fechacobro;
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 30/04/2012, 07:11
 
Fecha de Ingreso: abril-2012
Ubicación: Quito
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Respuesta: Como crear consulta mysql para que me devuelva la suma de dos valores

Gracias Quim me funciono el codigo, lo unico que despues TOTAL_INGRESO no me sale por ejemplo $ 70.00 solo sale 70.00, se alguin puede echar una manita, mas una vez muchas gracias Quim por la ayuda y por tu tiempo.
  #4 (permalink)  
Antiguo 30/04/2012, 07:23
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Como crear consulta mysql para que me devuelva la suma de dos valores

Yo quitaria el concat y agregaria el $ con la programacion externa que estes usando para mostrar el listado.....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 30/04/2012, 07:26
 
Fecha de Ingreso: abril-2012
Ubicación: Quito
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Respuesta: Como crear consulta mysql para que me devuelva la suma de dos valores

Gracias Quim mas una vez para contestar, mira esto es lo que estoy haciendo

$sel_resultado="SELECT cobros_ab.fechacobro,CONCAT('$ ',SUM(DISTINCT cobros_ab.importe) + SUM(DISTINCT entradas.importe)) AS TOTAL_INGRESOS FROM cobros_ab LEFT JOIN entradas ON cobros_ab.fechacobro=entradas.fechacobro GROUP BY cobros_ab.fechacobro";
$res_resultado=mysql_query($sel_resultado);
$contador=0;
while ($contador < mysql_num_rows($res_resultado)) {
$pdf->Cell(30,6,mysql_result($res_resultado,$contador," TOTAL_INGRESOS"),'LRTB',0,'C',1);
$pdf->Ln();
$contador++;

Es para generar un fpdf, como lo poderia hacer entonces se eres tan amable?
  #6 (permalink)  
Antiguo 30/04/2012, 08:48
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Como crear consulta mysql para que me devuelva la suma de dos valores

Como te dice quimfv, eso se hace con un CONCAT, porque no existe un tipo de dato MONEY o CURRENCY en MySQL.
Por lo demás, es mucho más sencillo crear ese formato de moneda en programación y no en la consulta de la base de datos. Así es como lo hacemos todos: programado en el lenguaje con el que interactúas con el el DBMS.
No trates de ahorrarte cosas innecesarias con la consulta. Hazlo en el lenguaje, que tiene mejores recursos para estos detalle.
Consulta en el Foro de PHP. En este foro no se responden temas de programación (Normas del Foro de Bases de Datos).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: select
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 11:57.