Foros del Web » Bases de Datos » Mysql »

Consulta condicional en mysql

Estas en el tema de Consulta condicional en mysql en el foro de Mysql en Foros del Web. Hola a todos: Necesito hacer una consulta en mysql que haga lo siguiente: Tengo dos tablas, una de clientes, con total1 y total2, y la ...
  #1 (permalink)  
Antiguo 21/03/2008, 06:00
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 11 años, 5 meses
Puntos: 2
Consulta condicional en mysql

Hola a todos:

Necesito hacer una consulta en mysql que haga lo siguiente:

Tengo dos tablas, una de clientes, con total1 y total2, y la otra con facturas, con un campo total, un cliente puede tener varias facturas.

¿Como podría hacer para sacar en una consulta todos los clientes que tengan la condición (total1+total2)<=(SUMA total facturas)?

¿Me podeis hechar una mano?

Muchas Gracias
  #2 (permalink)  
Antiguo 21/03/2008, 17:56
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 11 años, 5 meses
Puntos: 2
Re: Consulta condicional en mysql

¿Alguno sabe como hacerlo?

Gracias
  #3 (permalink)  
Antiguo 21/03/2008, 19:10
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.233
Antigüedad: 7 años, 7 meses
Puntos: 67
Re: Consulta condicional en mysql

A ver, sería de este modo:

select cl.nombre from clientes cl inner join facturas fa on cl.id = fa.cliente where cl.total1 + cl.total2 <= fa.total

Te explico: En primer lugar si tienes dos tablas relacionadas, obviamente debe haber un índice foráneo, asumo que ese indice foráneo es el campo cliente de la tabla facturas, ahora bien, esta consulta usa la sentencia INNER JOIN la cual se encarga de hacer una consulta que tenga una relación. También usa alias para simplificar las cosas. Bien, primero selecciono el campo nombre de la tabla clientes, si te das cuenta la tabla clientes fue reemplazada por "cl", eso se ve en la sentencia "clientes cl", obviamente puedes seleccionar más campos de ambas tablas. Despues hago el from, ahi es que defino los alias y la relación que existe entre ambas tablas. Primero pongo una tabla, en este caso la tabla clientes a la cual le he dado el alias de cl, luego hago el inner join, colocando al otro lado del inner join la tabla facturas a la cual le doy el alias de fa, luego pongo la sentecia on y despues expreso la relación que existe entre ambas tablas, que el índice principal de la tabla clientes (id) es igual al índice foráneo de la tabla factura (fa). Y después la condición usando la sentencia where. La condición puede tomar campos de ambas tablas, no habría problema.

Si la estructura de tus tablas no cuenta con un índice foráneo pues debes ponerlo y si estás en el nivel que necesitas hacer este tipo de consultas sería bueno que empieces a estudiar metódicamente el SQL.
  #4 (permalink)  
Antiguo 21/03/2008, 20:14
Avatar de jpinedo
Moderador PHP
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 11 años
Puntos: 40
Re: Consulta condicional en mysql

Hola:
Traslado tu tema desde PHP a Bases de datos.

Saludos,
  #5 (permalink)  
Antiguo 28/09/2008, 12:56
Avatar de RoaDRuNneR  
Fecha de Ingreso: marzo-2005
Ubicación: Xalapa
Mensajes: 155
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Consulta condicional en mysql

No pregunté yo, pero excelente explicación, me sacó de dudas. Saludos!
__________________
Biografías
  #6 (permalink)  
Antiguo 28/09/2008, 13:59
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.719
Antigüedad: 6 años, 6 meses
Puntos: 297
Respuesta: Consulta condicional en mysql

Entiendo que el total de facturas se refiere al total por cliente. Si es así, prueba esta consulta:
Código sql:
Ver original
  1. SELECT cl.id, t1.totaltotal, t1.total1total2
  2. FROM clientes cl
  3. INNER JOIN (
  4.  
  5. SELECT cl.id, SUM( f.total ) AS totaltotal, cl.total1 + cl.total2 AS total1total2
  6. FROM `clientes` cl
  7. INNER JOIN facturas f ON cl.id = f.idcli
  8. GROUP BY cl.id
  9. )t1 ON cl.id = t1.id
  10. WHERE  t1.total1total2 <= t1.totaltotal

Pero si es sobre el total de todos los id...
Código sql:
Ver original
  1. SELECT id FROM clientes WHERE (total1 + total2) <= (SELECT SUM(cantidad) FROM facturas)

Última edición por jurena; 29/09/2008 a las 08:54
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 01:03.
SEO by vBSEO 3.3.2