Je vais expliquer brièvement ce que je veux accomplir d'un point de vue fonctionnel. Je travaille sur une galerie d'images. Sur la page qui affiche une seule image, je souhaite que la barre latérale affiche les vignettes des images téléchargées par le même utilisateur. Au maximum, il devrait y avoir 6, 3 qui ont été postés avant l'image principale actuelle, et 3 qui ont été postés après l'image principale. Vous pouvez le voir comme un flux d'images par le même utilisateur à travers lequel vous pouvez naviguer. Je crois que Flickr a une chose similaire.Comment obtenir au mieux 3 images antérieures et 3 images postérieures dans une requête MySQL?
Techniquement, ma table d'image a un ID auto-incrémenté, un identifiant d'utilisateur et un champ date_uploaded, parmi beaucoup d'autres colonnes. Quels seraient vos conseils sur la façon de mettre en œuvre une telle requête? Puis-je combiner ceci en une seule requête? Existe-t-il des utilitaires MySQL pratiques qui peuvent gérer les offsets et autres? PS: Je préfère ne pas créer de colonne "rank" supplémentaire, car cela rendrait difficile la gestion des suppressions. En outre, l'utilisation de l'identifiant d'auto-incrémentation semble risquée, je pourrais le changer pour un GUID plus tard. Enfin, je suis bien sûr à la recherche d'une requête performante et évolutive.
Je sais que je demande beaucoup, mais il semble plus simple que c'est?
Cela semble intéressant. Juste pour clarifier, à quoi ressemblerait exactement ce champ indexé? Est-ce numérique? Est-ce une chaîne concaténée? Je pose cette question parce que je me demande comment MySQL va chercher dans la gamme quand il n'y a pas d'ordre numérique. Deuxième question: dans l'exemple de requête, quand vous dites image_id, vous voulez dire l'identifiant combiné utilisateur/image, n'est-ce pas? – Ferdy
@Ferdy, vérifiez ma réponse d'édition, je pense, ces questions. (désolé pour la réponse tardive) – mjv
Mjv, votre édition et commentaire a tout expliqué. Merci beaucoup pour la réponse rapide et détaillée. Désolé que j'ai raté le vote de réponse, j'ai essayé de le relever une fois de plus, mais à la place, il a mis sur zéro. Maintenant, il dit que le vote est trop vieux pour augmenter. Sache juste que je suis content de ta réponse! – Ferdy