Ver Mensaje Individual
  #17 (permalink)  
Antiguo 03/11/2010, 16:28
Avatar de gnzsoloyo
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: sistema de rating (ON DUPLICATE UPDATE) y promedio

Código MySQL:
Ver original
  1. SELECT img.id, img.titulo, img.nombre_foto, img.tecnica, img.medidas , AVG(rate.puntaje) promedio
  2. FROM fotos AS img
  3. LEFT OUTER JOIN fotos_principales AS principal ON (principal.id_foto = img.id)
  4. LEFT JOIN puntuaciones AS rate ON (rate.id_foto = img.id)
  5. WHERE img.id_album = '2' AND principal.id_foto IS NULL
  6. ORDER BY img.id DESC
Esto tal vez requiera una modificación de lógica
Código MySQL:
Ver original
  1.     img.id,
  2.     img.titulo,
  3.     img.nombre_foto,
  4.     img.tecnica,
  5.     img.medidas ,
  6.     AVG(rate.puntaje) promedio
  7.     fotos img
  8.     LEFT JOIN fotos_principales principal ON img.id = principal.id_foto
  9.     LEFT JOIN puntuaciones rate ON img.id = rate.id_foto
  10.     img.id_album = '2' OR  principal.id_foto IS NULL
  11. GROUP BY img.id DESC
  12. ORDER BY img.id DESC;

Tips:
- Pon los campos del ON en el mismo orden de las tablas.
- Comienza con la tabla que tenga todas las instancias (registros).
- OUTER es irrelevante si no usas una conexión ODBC. Sólo lo toma por compatibilidad, pero el parser lo transforma en LEFT JOIN.
- Si vas a usar una función de agregación, como AVG, se requiere la cláusula GROUP BY.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)