Mon site présente des groupes avec leur discographie. Sur la page de chaque album on peut noter l'album sur 7 étoiles. Si l'album a une de note de 5 ou plus, une liste de 5 autres albums qui ont étés notés de maniere similaire par un meme membre apparaît également sur la page.
ex: si X a voté 5 sur album1 et 6 sur album2, la page d'album1 affichera album2 dans sa liste.
La requête SQL est la suivante:
Code : Tout sélectionner
"SELECT a.id, a.Nom, a.Cover, a.Date, g.Groupe, u.username, v.vote as thisvote, p.vote as thatvote
FROM user_votes v, user_votes p, albums a, rela_groupe_album r, groupes g, phpbb_users u
WHERE v.alb_id='$ALB_ID' AND v.vote IN (5, 6, 7) AND p.user_id = v.user_id AND
p.alb_id != '$ALB_ID' AND p.vote IN (5, 6, 7) AND a.id = p.alb_id AND r.album_id = a.id AND
g.id = r.groupe_id AND u.user_id = v.user_id
GROUP BY p.alb_id
ORDER BY RAND() LIMIT 0, 5"J'aimerais donc optimiser cette requête pour qu'elle affiche cette liason en ordre decroîssant en rapport au nombre de membres qui ont voté sur deux albums de manière similaire.
Ex: X, Y et Z ont tous donné une note similaire à album1 et album2. X et Y ont donné une note similaire à album1 et album3. Seulement X a donné une note similaire à album1 et album4.
L'ordre serait donc album2, album3, album4
J'espère avoir été suffisament clair.
Est-ce possible en une seule requête? Si oui , comment ?
Merci d'avance.