Vous avez beaucoup de façons de le faire, et ils peuvent tous être PERFORMANT jusqu'à une limite, ce que je ferais dans ce cas précis est la suivante:
Obtenez les années id favoris dans un multiple gauche se joignent comme champ séparé, vous pouvez alors facilement (...) le tableau de lignes pour chaque champ et récupérer l'identifiant. La requête ressemblerait à ceci. L'adapter à votre propre usage:
SELECT
a.*,
f1.favoriteid as f1id,
f2.favoriteid as f2id,
f3.favoriteid as f3id,
f4.favoriteid as f4id,
f5.favoriteid as f5id
FROM allmembers a
LEFT JOIN favorites f1 ON (f.memberid=a.memberid)
LEFT JOIN favorites f2 ON (f.memberid=a.memberid) AND f1.favoriteid <> f2.favoriteid
LEFT JOIN favorites f3 ON (f.memberid=a.memberid) AND f1.favoriteid <> f3.favoriteid AND f2.favoriteid <> f3.favoriteid
LEFT JOIN favorites f4 ON (f.memberid=a.memberid) AND f1.favoriteid <> f4.favoriteid AND f2.favoriteid <> f4.favoriteid AND f3.favoriteid <> f4.favoriteid
LEFT JOIN favorites f5 ON (f.memberid=a.memberid) AND f1.favoriteid <> f5.favoriteid AND f2.favoriteid <> f5.favoriteid AND f3.favoriteid <> f5.favoriteid AND f4.favoriteid <> f5.favoriteid
order by f.date desc LIMIT 10
En utilisant cette méthode, vous pouvez également lire les informations de la table favoris ou même se joindre à gauche sur une autre table X nombre de fois pour obtenir plus d'informations sur ce favori. Tant que vous installez les index corrects, cette méthode est extrêmement rapide, même avec des milliers de membres et près de millions de favoris.
Vous pouvez également appliquer cette stratégie à de nombreux autres scénarios. Par exemple, nous travaillons avec WordPress ici au travail et de nombreuses informations pour les utilisateurs sont conservées en tant que champs méta, donc la sélection d'une grande table est impossible à moins que vous n'effectuiez cette méthode. Bonne chance
1- Désolé pour le titre. Je l'ai mis à jour. – Mertafor