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

Consulta en MYSQL

Estas en el tema de Consulta en MYSQL en el foro de Bases de Datos General en Foros del Web. Cordial Saludo por primera vez escribo en este foro espero que puedan ayudarme mi problema es el el siguiente estoy realizando la siguiente consulta en ...
  #1 (permalink)  
Antiguo 27/07/2010, 17:33
 
Fecha de Ingreso: noviembre-2009
Mensajes: 6
Antigüedad: 14 años, 6 meses
Puntos: 0
Consulta en MYSQL

Cordial Saludo por primera vez escribo en este foro espero que puedan ayudarme
mi problema es el el siguiente estoy realizando la siguiente consulta en myadmin

y me funciona perfectamente el problema es que si la entidad no tiene un registro en la tabla videos entonces la consulta es vacía; me gustaría saber si hay forma que consulte en la BD y si no tiene registros la tabla videos igual me muestre la consulta simplemente obviando el cambio videos

Dejo la consulta.
SELECT e. idEntidad, e.entidad, e.DesBreve, e.detalles, e.direccion, e.telefono, e.movil, e.email, e.webSite, e.logo, c.ciudad, p.pais, p.Codigo, s.subCategoria, z.categoria, i.nombre, i.tipo,v.direccionV, v.idEntidad FROM entidad e, imagenes i, ciudad c, subcategoria s, categoria z, pais p, videos v WHERE e.idEntidad = 1 and i.idEntidad = e.idEntidad and v.idEntidad = e.idEntidad and s.idSubCategoria = e.idSubCat and z.idCategoria = e.idCategoria and c.idCiudad = e.idCiudad and p.Codigo = e.idPais ORDER BY i.nombre

De antemano muchas gracias
  #2 (permalink)  
Antiguo 27/07/2010, 18:32
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, 5 meses
Puntos: 2658
Respuesta: Consulta en MYSQL

Este tipo de consultas no las logras usando la coma (,) en el FROM sino sólo con LEFT | INNER | RIGHT JOIN, que por otro lado es la mejor forma de jacer JOINs:
Recalco esto porque si bien es cierto que poner las relaciones enel WHERE resulta funcional (todos los manuales lo usan), el WHERE no puede ser optimizado en el parseo y el FROM si, por lo que siempre serán más eficientes las consultas con JOIN y no con comas.

Código MySQL:
Ver original
  1.   e.idEntidad,
  2.   e.entidad,
  3.   e.DesBreve,
  4.   e.detalles,
  5.   e.direccion,
  6.   e.telefono,
  7.   e.movil,
  8.   e.email,
  9.   e.webSite,
  10.   e.logo,
  11.   c.ciudad,
  12.   p.pais,
  13.   p.Codigo,
  14.   s.subCategoria,
  15.   z.categoria,
  16.   i.nombre,
  17.   i.tipo,
  18.   v.direccionV,
  19.   v.idEntidad
  20. FROM entidad e LEFT JOIN imagenes i ON e.idEntidad = i.idEntidad
  21.   LEFT JOIN ciudad c ON e.idCiudad = c.idCiudad
  22.   LEFT JOIN subcategoria s ON e.idSubCat = s.idSubCategoria
  23.   LEFT JOIN categoria z ON e.idCategoria = z.idCategoria
  24.   LEFT JOIN pais p ON e.idPais = p.Codigo
  25.   LEFT JOIN videos v ON e.idEntidad = v.idEntidad
  26. WHERE e.idEntidad = 1
  27. ORDER BY i.nombre;
LEFT JOIN devuelve registros basándose en la tabla a la izquierda (left) del JOIN, haya o no coincidencias con la tabla derecha. Por esta misma razón la posición de las tablas invocadas en el JOIN y la relación en su ON respectivo son importantes en este caso. Aquí no se cumple lo de "el orden de los factores no altera el producto", en este caso si lo altera.
__________________
¿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 28/07/2010, 08:14
 
Fecha de Ingreso: noviembre-2009
Mensajes: 6
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Consulta en MYSQL

Muchísimas gracias gnzsoloyo no pensé que fueran a responder tan rápido y de la manera tan clara como me lo has explicado ya lo corrí en el myadmin y funciona perfecto estudiaré mas a fondo el tema de LEFT | INNER | RIGHT JOIN que me parece super interesante.

La verdad a penas estoy comenzando con esto de php y mysql pero ahí vamos muchas gracias nuevamente.

Etiquetas: 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 10:17.