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

consulta Left Join en MySql

Estas en el tema de consulta Left Join en MySql en el foro de Bases de Datos General en Foros del Web. Hola!! Estoy haciendo una consulta donde requiero los registros de una tabla que no existan en otra tabla, esto funciona bien, pero ahora requiero agregar ...
  #1 (permalink)  
Antiguo 01/11/2010, 13:18
 
Fecha de Ingreso: marzo-2002
Mensajes: 299
Antigüedad: 22 años, 8 meses
Puntos: 1
consulta Left Join en MySql

Hola!!

Estoy haciendo una consulta donde requiero los registros de una tabla que no existan en otra tabla, esto funciona bien, pero ahora requiero agregar una condiciòn y no logro hacer que funcione.

La consulta que tengo y funciona es:

SELECT CLIENTES.* FROM CLIENTES LEFT JOIN clientesAutorizados ON CLIENTES.id=clientesAutorizados.id WHERE clientesAutorizados.NUM_REG IS NULL

Requiero agregar una condición, que el campo activo de la tabla clientes sea='S', para lo que he tratado de hacer es:

SELECT CLIENTES.* FROM CLIENTES LEFT JOIN clientesAutorizados ON CLIENTES.id=clientesAutorizados.id WHERE CLIENTES.activo='A' AND clientesAutorizados.NUM_REG IS NULL

también intenté:

SELECT CLIENTES.* FROM CLIENTES WHERE CLIENTES.activo='A' LEFT JOIN clientesAutorizados ON CLIENTES.id=clientesAutorizados.id WHERE clientesAutorizados.NUM_REG IS NULL


y no me funcionan.

Desde ya gracias por su atenciòn y ayuda.
  #2 (permalink)  
Antiguo 01/11/2010, 15:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: consulta Left Join en MySql

¿No te funcionan en qué sentido? ¿Producen un error de sintaxis o es que el resultado no es el buscado?
Código MySQL:
Ver original
  1.     CLIENTES.*
  2.     CLIENTES LEFT JOIN clientesAutorizados ON CLIENTES.id=clientesAutorizados.id
  3. WHERE clientesAutorizados.NUM_REG IS NULL;
Está correctamente escrita. Devuelve todos los CLIENTES que no aparecen en ClientesAutorizados. Tiene el defecto e que si la relación entre Clientes y ClientesAutorizados es 1:N, se pueden repetir registros.

Código MySQL:
Ver original
  1.     CLIENTES.*
  2.     CLIENTES LEFT JOIN clientesAutorizados ON CLIENTES.id=clientesAutorizados.id
  3.     CLIENTES.activo='A' AND
  4.     clientesAutorizados.NUM_REG IS NULL;
Mismo caso anterior, pero excluyendo a los clientes activos.



Código MySQL:
Ver original
  1.     CLIENTES.*
  2.     CLIENTES
  3. WHERE CLIENTES.activo='A'
  4.     LEFT JOIN clientesAutorizados ON CLIENTES.id=clientesAutorizados.id
  5.     clientesAutorizados.NUM_REG IS NULL
Pésimamente escrita:
- No puede haber dos WHERE en un mismo SELECT.
- El JOIN (cualquiera) es una cláusula del FROM, no del WHERE.

Las dos primeras deberían darte lo que buscas; si no lo hacen es muy probable que el error esté en los datos y no en la sentencia.
Para verificarlo, asegúrate de que realmente haya algún cliente con activo<>'A' que no esté en la segunda tabla... Puede que no tengas ninguno.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 02/11/2010, 09:25
 
Fecha de Ingreso: marzo-2002
Mensajes: 299
Antigüedad: 22 años, 8 meses
Puntos: 1
Respuesta: consulta Left Join en MySql

Gracias gnzsoloyo!!, creo si hay algo mal en la sintaxis, estoy utilizando la consulta que va:

SELECT CLIENTES.* FROM CLIENTES LEFT JOIN clientesAutorizados ON
CLIENTES.id=clientesAutorizados.id WHERE CLIENTES.activo='A' AND clientesAutorizados.NUM_REG IS NULL;

y marca el siguiente error;

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\www\proyectos\clietesactivos.php on line 53

En esa lìnea tengo la consulta.
  #4 (permalink)  
Antiguo 02/11/2010, 09:31
 
Fecha de Ingreso: marzo-2002
Mensajes: 299
Antigüedad: 22 años, 8 meses
Puntos: 1
Respuesta: consulta Left Join en MySql

Ya, tenìa un error de dedo un punto donde no deberìa

SELECT CLIENTES.* FROM CLIENTES LEFT JOIN clientesAutorizados. ON
CLIENTES.id=clientesAutorizados.id WHERE CLIENTES.activo='A' AND clientesAutorizados.NUM_REG IS NULL;

Graciass!!
  #5 (permalink)  
Antiguo 02/11/2010, 09:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: consulta Left Join en MySql

Pero ese no es un mensaje de error sintáctico de MySQL sino de PHP...
Revisa tu script de PHP y verifica la sintaxis a nivel de código PHP. El problema está allí.

No sé qué estás usando para codificar en PHP, pero yo te sugiero que descargues, instales y uses el NetBeans, que tiene un excelente parser para PHP. A mí me marca perfectamente los errores.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 02/11/2010, 09:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: consulta Left Join en MySql

OK. Ese era el problema...
__________________
¿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: join, left, mysql
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 14:33.