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

Consultar a la bd con varias tablas sin que se repita.

Estas en el tema de Consultar a la bd con varias tablas sin que se repita. en el foro de Bases de Datos General en Foros del Web. Hola buenas tengo un problema que he logrado solucionar pero no estoy seguro de que sea la mejor forma, mientras más rápido sea la consulta ...
  #1 (permalink)  
Antiguo 03/06/2009, 17:12
 
Fecha de Ingreso: febrero-2006
Mensajes: 148
Antigüedad: 18 años, 9 meses
Puntos: 0
Consultar a la bd con varias tablas sin que se repita.

Hola buenas tengo un problema que he logrado solucionar pero no estoy seguro de que sea la mejor forma, mientras más rápido sea la consulta mucho mejor es lo que intento sin embargo la forma en que lo tengo no me parece el mejor. Es lo siguiente

SELECT * FROM `contactos`, `telefonos`,`configuraciones` WHERE
`contactos`.`password`="17067588" AND
`contactos`.`cod_publicacion`=`telefonos`.`cod_pub licacion` AND
`contactos`.`cod_publicacion`=`configuraciones`.`c od_publicacion`;

Explico mejor lo que me gustaría es que cualquier dato que se esté buscando en una tabla, sepa el cod_publicacion y asi relacionarlo con las otras 2 tablas, en este caso fue la contraseña en la tabla contactos. Otra forma q se me ocurrió fue primero buscar el dato extraigo el cod_publicacion y volver a consultar pero me parece un poco engorroso.

la otra forma en la que tenia era la siguiente:
SELECT * FROM `contactos`,`configuraciones`,`telefonos` WHERE `contactos`.`password`="17067588";

pero el resultado que muestra es una serie de filas repetidas.


Muchas gracias. salu2....
  #2 (permalink)  
Antiguo 03/06/2009, 17:18
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Consultar a la bd con varias tablas sin que se repita.

Código sql:
Ver original
  1. SELECT *FROM contactos c
  2. INNER JOIN telefonos t
  3. ON c.cod_publicacion = t.cod_publicacion
  4. INNER JOIN configuraciones co
  5. ON c.cod_publicacion = co.cod_publicacion
  6. WHERE c.password = '17067588';
Esta consulta es mucho mas eficiente que la que tienes.

Un saludo
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 03/06/2009, 20:49
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: Consultar a la bd con varias tablas sin que se repita.

Coincido con huesos52. Tu problema es que en el FROM estás creando un producto cartesiano, por no usar INNER JOIN.
Además ten en cuenta siempre que lo que va en el WHERE no es optimizable por el parser de MySQL, mientras que lo que va en el FROM si.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 04/06/2009, 12:05
 
Fecha de Ingreso: febrero-2006
Mensajes: 148
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: Consultar a la bd con varias tablas sin que se repita.

muchas gracias me ha funcionado, si tienen razón es mucho mejor.
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:21.