Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/04/2011, 02:33
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Como puedo ordenador esto?

No parece que busques votos sino una nota media

Cita:
SUM(v.value) / COUNT(v)
Esto te da la nota media de cada libro

Código MySQL:
Ver original
  1. SELECT book_id, SUM(v.value) / COUNT(*) as nota FROM vote v GROUP BY v.book_id;

esto de da la lista de titulos del autor elegido

Código MySQL:
Ver original
  1. SELECT b.id,b.title
  2. FROM book_autor ba
  3. INNER JOIN book b
  4. ON ba.book_id=b.id
  5. WHERE ba.author_id = {$author->id}


Ahora lo juntamos

Código MySQL:
Ver original
  1. Select b2.title, b1.nota
  2.     (SELECT book_id, SUM(v.value) / COUNT(*) as nota
  3.       FROM vote v GROUP BY v.book_id) as b1
  4.     (SELECT b.id,b.title
  5.      FROM book_autor ba
  6.      INNER JOIN book b
  7.         ON ba.book_id=b.id WHERE ba.author_id = {$author->id}) as b2
  8. ON b2.id=b1.book_id
  9. ORDER BY b1.nota DESC


Si fueran votos seria mas facil pero luego no tendria sentido el campo value de vote.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.