Maison > base de données > tutoriel mysql > Comment récupérer les 5 principaux éléments de menu de chaque catégorie dans MySQL ?

Comment récupérer les 5 principaux éléments de menu de chaque catégorie dans MySQL ?

Patricia Arquette
Libérer: 2024-11-06 02:17:02
original
1033 Les gens l'ont consulté

How to Retrieve the Top 5 Menu Items from Each Category in MySQL?

Renvoyer les 5 meilleurs éléments de chaque catégorie dans MySQL

Défi :
Récupérer le menu du top 5 éléments de chaque catégorie dans une base de données composée de deux tableaux, "menus" et "menuitems".

Solution :

Le code présenté vise à afficher les 5 premiers éléments par catégorie de menu. Cependant, il renvoie une erreur car la sous-requête récupère plusieurs lignes. Pour résoudre ce problème, des variables à effets secondaires peuvent être utilisées pour suivre la position de chaque ligne dans la catégorie.

SELECT profilename, name
FROM
(
    SELECT m.profilename, s.name,
        @r:=case when @g=m.profilename then @r+1 else 1 end r,
        @g:=m.profilename
    FROM (select @g:=null,@r:=0) n
    cross join menus m 
    left join menuitems s on m.menuid = s.menuid
) X
WHERE r <= 5
Copier après la connexion

Répartition :

  1. La requête externe sélectionne le nom (catégorie) et le nom (élément de menu) à partir d'une sous-requête (X) qui attribue des valeurs de position de ligne (r) et d'identifiant de groupe (g) via des variables à effet secondaire (@r, @g).
  2. La sous-requête utilise une jointure croisée entre la table des menus (m) et une table (n) initialisée avec @g et @r comme NULL et 0, respectivement.
  3. Le JOIN avec la ou les tables menuitems ajoute le noms d'éléments de menu en fonction des identifiants de menu.
  4. L'instruction CASE attribue des valeurs de position de ligne, en incrémentant de 1 pour chaque ligne de la même catégorie. Si une nouvelle catégorie est rencontrée, elle réinitialise le compteur à 1.
  5. La clause WHERE filtre les résultats pour inclure uniquement les lignes parmi les 5 premières pour chaque catégorie, en fonction des valeurs de position des lignes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal