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

Comparar 2 tablas y mostrar registros que no se encuentran en una de ellas

Estas en el tema de Comparar 2 tablas y mostrar registros que no se encuentran en una de ellas en el foro de Bases de Datos General en Foros del Web. Hola a todos! Estoy armando un panel de control y tengo la siguiente duda sobre la manera de armar un SQL. Tengo 2 tablas... una ...
  #1 (permalink)  
Antiguo 01/11/2010, 08:50
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Comparar 2 tablas y mostrar registros que no se encuentran en una de ellas

Hola a todos! Estoy armando un panel de control y tengo la siguiente duda sobre la manera de armar un SQL.

Tengo 2 tablas...
una general con todos los datos de los productos (tabla PRODUCTOS) y otra tabla que contiene un link de un pdf para bajar (tabla ARCHIVOS).

Las 2 están relacionadas por el campo cod_producto.

El tema es que la tabla ARCHIVOS solo tiene cargado algunos pdf y lo que quisiera saber es cómo se comparan las 2 tablas y cómo hago para que me liste los productos de la TABLA PRODUCTOS que NO están en la tabla ARCHIVOS.

Espero haberme explicado claramente.

Muchas gracias como siempre.

Saludos. Marx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #2 (permalink)  
Antiguo 01/11/2010, 08:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Tema movido desde PHP a Bases de Datos
  #3 (permalink)  
Antiguo 01/11/2010, 08:57
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 7 meses
Puntos: 87
Respuesta: Comparar 2 tablas y mostrar registros que no se encuentran en una de ellas

bueno es mas un tema de sql que de PHP. pero lo podrías hacer así:

Código MySQL:
Ver original
  1. SELECT * from productos WHERE productos.cod_producto NOT IN (SELECT cod_producto from archivos)

Saludos.
  #4 (permalink)  
Antiguo 01/11/2010, 09:15
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: Comparar 2 tablas y mostrar registros que no se encuentran en una de ellas

Cita:
Iniciado por quike88 Ver Mensaje
bueno es mas un tema de sql que de PHP. pero lo podrías hacer así:

Código MySQL:
Ver original
  1. SELECT * from productos WHERE productos.cod_producto NOT IN (SELECT cod_producto from archivos)

Saludos.
Hola quike88: gracias por responder.

Me sale el siguiente error:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT cod_producto from archivos)' at line 1

¿Sábes por qué es este error?

A lo mejor debí aclarar que estaba haciendo una consulta en php... perdón.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #5 (permalink)  
Antiguo 01/11/2010, 09:39
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 7 meses
Puntos: 87
Respuesta: Comparar 2 tablas y mostrar registros que no se encuentran en una de ellas

mm... que raro a mi me funciona correctamente ese código, y no debería afectar si tu consulta esta en php, porque me imagino que lo haces algo asi:

Código PHP:
Ver original
  1. $sql="SELECT * FROM productos WHERE productos.cod_producto NOT IN (SELECT cod_producto FROM archivos)";
  2. $resultado=mysql_query($sql) or die (mysql_error());

bueno y el error se debe a que hay un error de sintaxis cerca de 'SELECT cod_producto from archivos)', pero yo no veo ninguno.
  #6 (permalink)  
Antiguo 01/11/2010, 11:50
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: Comparar 2 tablas y mostrar registros que no se encuentran en una de ellas

No... es así tal cual y me sigue mostrando ese error. ¿Puede ser que sea la versión de mi mySQL o del phpmyadmin?
Probé la consulta desde el phpmyadmin y me sale este error:

#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT cod_producto FROM archivos
LIMIT 0, 30' at li

Que cosa rara che...
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #7 (permalink)  
Antiguo 01/11/2010, 12:39
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: Comparar 2 tablas y mostrar registros que no se encuentran en una de ellas

Postea la sentencia completa que stás usando. A veces el error es algo nimio, pero sin verla entera no es posible saberlo. No importa si nos dices que copiaste y pegaste, muchas veces se filtra algún defecto aún en esos casos.
Copia la que TU estés usando en el script y pégala aquí. Entonces veremos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 01/11/2010, 12:55
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: Comparar 2 tablas y mostrar registros que no se encuentran en una de ellas

Bueno... probé hacerlo de estas 2 maneras:

Código PHP:
$result mysql_query("SELECT * FROM productos WHERE productos.cod_producto NOT IN (SELECT cod_producto FROM archivos)"$conexion) or die(mysql_error()); 
Código PHP:
$sql "SELECT * FROM productos WHERE productos.cod_producto NOT IN (SELECT cod_producto FROM archivos)";
$result=mysql_query($sql) or die (mysql_error()); 
La verdad, nunca me pasó esto por eso mi intriga en el xq puede ser que suceda.

Gracias nuevamente.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #9 (permalink)  
Antiguo 01/11/2010, 15:00
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: Comparar 2 tablas y mostrar registros que no se encuentran en una de ellas

En ambos casos usas la misma sentencia:
Código MySQL:
Ver original
  1. FROM productos
  2. WHERE productos.cod_producto NOT IN (SELECT cod_producto FROM archivos);

Pero deduzco que no es en este caso que te está produciendo un error, porque ninguna de las dos formas contiene esta parte:
Cita:
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT cod_producto FROM archivos
LIMIT 0, 30' at li
Ninguna de las dos que posteas contiene la parte resaltada: LIMIT 0, 30, por lo que o se trata de otra sentencia, o no estás posteando el fragmento de código completo.

Si no ubicamos exactamente la que produce el error no podemos ayudarte, porque debemos analizar un error sintáctico... y eso no es algo genérico. Sólo se da en ese caso.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 04/11/2010, 04:25
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: Comparar 2 tablas y mostrar registros que no se encuentran en una de ellas

Hola quike88, gnzsoloyo!

Bueno... como era mi sospecha, subí todo a mi servidor pago con las modificaciones tal cual me han aconsejado uds. y FUNCIONÓ. Estuve probando y probando y funciona a la perfección.

Era evidente que en mi servidor local no funcionaba porque tengo una versión vieja de mysql, apache y phpmyadmin la cual debería actualizar para evitar este y próximas modificaciones.

Veré la manera de actualizar todo sin tener grandes sobresaltos.

Nuevamente, mil gracias por su tiempo.

Saludos. Marx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.

Etiquetas: comparar, registros, tablas
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 23:08.