Donc, j'ai un scénario où il y a de 1 à 8 personnes que j'ai besoin d'interroger jusqu'à 3 choses qu'ils "aimaient" par personne. J'ai la requête mis en place commeComment utiliser MYSQL LIMIT par personne
SELECT liked FROM likeTable WHERE uid IN (uid1,uid2,uid3,uid4) LIMIT 12
mais évidemment cela peut potentiellement arrêter quand j'ai 12 « aime » pour UID1, laissant le reste à 0. J'ai lu une solution possible en utilisant UNION ALL par exemple ...
(SELECT liked FROM likeTable WHERE uid = uid1 LIMIT 3)
UNION ALL
(SELECT liked FROM likeTable WHERE uid = uid2 LIMIT 3)
UNION ALL
(SELECT liked FROM likeTable WHERE uid = uid3 LIMIT 3)
UNION ALL
(SELECT liked FROM likeTable WHERE uid = uid4 LIMIT 3)
Et je serais en mesure d'atteindre cet objectif en faisant la chaîne de requête SQL en php avec un forloop, mais est-ce un moyen efficace d'interroger mes données?
Note: Je ne me soucie pas vraiment de l'ordre dans lequel le « aimé » est récupéré, bien que ce serait bien si je pouvais ajouter une ORDER BY likeID DESC, qui est ma colonne autoincrementing
Merci à!
Copie possible de http://stackoverflow.com/questions/2000744/mysql-limit-results-per-category et http://stackoverflow.com/questions/2129693/mysql-using-limit-within-group- by-to-get-n-results-per-group –
Essayez: 'SET @cnt: = 0; SELECT b.liked FROM likeTable un \t INNER JOIN likeTable b SUR a.uid = b.uid ET (@cnt: = @cnt - 1)> 0 où uid IN (uid1, uid2, uid3, uid4) et @ cnt: = 3 LIMIT 12' – Dor