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

listar fotos salvo la principal

Estas en el tema de listar fotos salvo la principal en el foro de Mysql en Foros del Web. Tengo esta consulta para listar todas las fotos de un album: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT img . id , img . titulo ...
  #1 (permalink)  
Antiguo 02/11/2010, 10:31
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Busqueda listar fotos salvo la principal

Tengo esta consulta para listar todas las fotos de un album:

Código SQL:
Ver original
  1. SELECT img.id, img.titulo, img.nombre_foto, img.tecnica, img.medidas FROM fotos AS img WHERE img.id_album = '1' ORDER BY id DESC

Ahora quiero el mismo listado pero sin la foto principal. El id de la foto principal lo tengo en una tabla así:

fotos_principales(id_album, id_foto).

Necesito hacer un JOIN y luego escribir alguna linea para saltear la foto imagen, no? Que tipo de join, left outer? Y como salteo la foto, con una clausula ON (principal.id_foto != img.id)

Probe con esto pero me devuelve las demas fotos repetidas 3 veces!

Código SQL:
Ver original
  1. INNER JOIN fotos_principales AS principal ON (principal.id_foto != img.id)
  #2 (permalink)  
Antiguo 02/11/2010, 11:27
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Respuesta: listar fotos salvo la principal

A ver, pasando en limpio la consulta y teniendo en cuenta el id del album que antes me había olvidado, tengo esto:

Código SQL:
Ver original
  1. SELECT img.id, img.titulo, img.nombre_foto, img.tecnica, img.medidas FROM fotos AS img
  2.  
  3. LEFT OUTER JOIN fotos_principales AS principal ON (principal.id_album = '2' AND principal.id_foto = img.id)
  4.  
  5. WHERE img.id_album = '2' ORDER BY id DESC

Es decir, hago el join para saber cual es la foto principal del album, y luego saltear esa foto para que no se liste junto con las otras. Hago un LEFT OUTER JOIN en vez de usar un comparador !=

Alguien me ayuda a ver claro como hacer la consulta?
  #3 (permalink)  
Antiguo 02/11/2010, 11:34
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Respuesta: listar fotos salvo la principal

Bueno, al parecer IS NULL fue la solucion. Aparentemente va bien!

Código SQL:
Ver original
  1. SELECT img.id, img.titulo, img.nombre_foto, img.tecnica, img.medidas FROM fotos AS img
  2. LEFT OUTER JOIN fotos_principales AS principal ON (principal.id_foto = img.id)
  3. WHERE img.id_album = '2' AND principal.id_foto IS NULL ORDER BY id DESC

Etiquetas: fotos, listar, principal
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 07:10.