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

[SOLUCIONADO] consulta que me dice quienes no han pagado

Estas en el tema de consulta que me dice quienes no han pagado en el foro de Mysql en Foros del Web. buenas tardes tengo 2 tablas una pagos y otra clientes que tienen en comun el campo idcliente: tabla pagos contiene los siguientes campos: Código HTML: ...
  #1 (permalink)  
Antiguo 20/03/2016, 12:53
 
Fecha de Ingreso: diciembre-2013
Mensajes: 7
Antigüedad: 10 años, 4 meses
Puntos: 0
Pregunta consulta que me dice quienes no han pagado

buenas tardes tengo 2 tablas una pagos y otra clientes que tienen en comun el campo idcliente:


tabla pagos contiene los siguientes campos:
Código HTML:
idpago	
idcliente		
documento	
mes	
year	
valor	
fecha_pago
la tabla clientes contiene los siguientes campos:

Código HTML:
idcliente	
documento	
apellido1	
apellido2	
nombre	
realicé la siguiente consulta donde paso 2 parametros via $_POST['mes'] y $_POST['year'] para obtener los idcliente de las personas de las personas que pagaron en cierto mes del año y con un LEFT JOIN traje los datos de los clientes de la tabla clientes, y me funcionó.
de la siguiente forma.

Código MySQL:
Ver original
  1. SELECT clientes.idcliente, clientes.documento, apellido1, apellido2, nombres
  2. FROM pagos LEFT JOIN clientes ON pagos.idcliente = clientes.idcliente
  3. WHERE mes=%s AND year=%s


ahora no ve lo van creer pero llevo 3 dias intentando hacer una consulta para saber quienes no han pagado y no lo he podido lograr, pensé que simplemente con cambiar

Código SQL:
Ver original
  1. pagos.idcliente = clientes.idcliente

por

Código MySQL:
Ver original
  1. pagos.idcliente <> clientes.idcliente

seria suficiente pero no me funciona, alguno de ustedes me podria ayudar muchas gracias.

Cita:
Editado: Código de programación no permitido en foros de Bases de Datos.
Leer las normas del foro, por favor.

Última edición por gnzsoloyo; 20/03/2016 a las 15:13
  #2 (permalink)  
Antiguo 20/03/2016, 14:08
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: consulta que me dice quienes no han pagado

No es tan simple como solo cambiar el where tienes que hacer algunas otras cosas, si buscas en el foro encontraras varios post donde se explica como hacer este tipo de consultas..........

seria algo como esto:


Código MySQL:
Ver original
  1. select * from clientes where cliente no in(
  2. select cliente from clientes as t1
  3. left join pagos as t2 on (t1.cliente=t2.cliente)
  4. where year=2016 and mes=1)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 20/03/2016, 15:50
 
Fecha de Ingreso: diciembre-2013
Mensajes: 7
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: consulta que me dice quienes no han pagado

Cita:
Iniciado por Libras Ver Mensaje
No es tan simple como solo cambiar el where tienes que hacer algunas otras cosas, si buscas en el foro encontraras varios post donde se explica como hacer este tipo de consultas..........

seria algo como esto:


Código MySQL:
Ver original
  1. select * from clientes where cliente no in(
  2. select cliente from clientes as t1
  3. left join pagos as t2 on (t1.cliente=t2.cliente)
  4. where year=2016 and mes=1)
Cita:
hola muchas gracias por tu respuesta en intentado aplicar tu sugerencia y me encuentro con un error de sintaxis
esto fue lo que puse segun tu sugerencia:

Código &quot:
Ver original
  1. select *  from clientes  
  2. where t1.idcliente
  3. not in( SELECT t2.idcliente FROM clientes as t1 left join pagos as t2 on (t1.idcliente=t2.idcliente)
  4. WHERE mes=%s AND year=%s
no se cual será el error

Última edición por maurousa33; 20/03/2016 a las 16:14
  #4 (permalink)  
Antiguo 20/03/2016, 16:27
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: consulta que me dice quienes no han pagado

creo que te faltan parentesis para esa consulta:

Código MySQL:
Ver original
  1. select *  from clientes  
  2. where t1.idcliente
  3. not in( SELECT t2.idcliente FROM clientes as t1 left join pagos as t2 on (t1.idcliente=t2.idcliente)
  4. WHERE mes=%s AND year=%s )

prueba con eso, y trata de poner el error tal cual te aparece, porque sin el error no se te puede ayudar demasiado......
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 20/03/2016, 16:38
 
Fecha de Ingreso: diciembre-2013
Mensajes: 7
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: consulta que me dice quienes no han pagado

Cita:
Iniciado por Libras Ver Mensaje
creo que te faltan parentesis para esa consulta:

Código MySQL:
Ver original
  1. select *  from clientes  
  2. where t1.idcliente
  3. not in( SELECT t2.idcliente FROM clientes as t1 left join pagos as t2 on (t1.idcliente=t2.idcliente)
  4. WHERE mes=%s AND year=%s )

prueba con eso, y trata de poner el error tal cual te aparece, porque sin el error no se te puede ayudar demasiado......

amigo lo solucione de la siguiente forma era un error de ambigüedad
muchas gracias me ayudaste mucho
Código MySQL:
Ver original
  1. select *  from clientes  
  2. where idcliente not in( SELECT t1.idcliente FROM clientes as t1 left join pagos as t2 on (t1.idcliente=t2.idcliente) WHERE year=%s and mes=%s)

Etiquetas: campo, fecha, join, pagado, select, 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 18:58.