Maison > base de données > tutoriel mysql > le corps du texte

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

Patricia Arquette
Libérer: 2024-11-05 19:44:02
original
858 Les gens l'ont consulté

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

Renvoyer les 5 principaux éléments de menu dans chaque catégorie à l'aide de MySQL

Dans une base de données MySQL, vous avez la table 'menus' avec des champs' menuid' et 'profileName', ainsi que la table 'menuitems' avec les champs 'itemid', 'name' et 'menuid'. Vous souhaitez récupérer les cinq principaux éléments de menu pour chaque menu dans le tableau « menus ».

Une approche que vous avez essayée a entraîné une erreur :

SELECT m.profilename, name
FROM menus m 
WHERE (SELECT name
        from menuitems s
        where m.menuid = s.menuid
        limit 5)
Copier après la connexion

Cependant, l'erreur indique que le la sous-requête renvoie plus d'une ligne. Pour surmonter ce problème, vous pouvez utiliser des variables à effets secondaires. Voici une solution révisée :

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

Dans cette requête, les variables à effets secondaires @g et @r sont utilisées pour garder une trace du nom du menu actuel (profileName) et de la position (numéro de ligne) à l'intérieur de celui-ci. menu. L'instruction CASE garantit que la position commence à 1 pour chaque nouveau menu et s'incrémente pour les éléments de menu suivants. La clause WHERE finale filtre les 5 premières lignes avec les numéros de position les plus bas.

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