IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

[Newbie] Aide sur requête…


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut [Newbie] Aide sur requête…
    Bonjour,
    j'ai bien besoin de votre aide pour faire une requête…

    je dois créer un fichier xml pour faire un menu "dynamique". J'ai donc besoin d'extraire l'arborescence depuis une base de données (les noms des rubriques et l'arboresce sont dans une base mysql).
    Le nom d'une rubrique est "cat_name" (les rubriques y sont appelées category). Son identifiant : cat_id
    En cas de sous-rubrique, 'identifiant de la rubrique qui la contient est "cat_father_id". On n'est pas limité dans le nombre de sous-rubriques…

    J'imagine que d'abord il faut sélectionner les rubriques principales (qui n'ont pas de parent).
    $query = "SELECT * from CC_categories WHERE cat_father_id = "0" ORDER BY cat_id DESC";

    Et qu'ensuite on va rechercher les enfants de chacune de ces catégories (rubriques), ainsi de suite tant qu'il y en a. Oui mais je n'ai pas d'idée de comment faire ça ? Je ne sais pas si ça peut se faire dans une même requête ou dans plusieurs (une par niveau ?)…

    Ouh la la…
    Merci pour vos tuyaux !…

    Paul

  2. #2
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 161
    Points : 185
    Points
    185
    Par défaut
    Tu utilise quel sgbd ?
    Avec mysql je ne crois pas qu'on puisse faire des requêtes récursives.
    Si tu as le temps et envie de simplifier un peu le problème tu peux jeter un coup d'oeil sur cette page.
    http://sqlpro.developpez.com/cours/arborescence/
    Avec une représentation des données par intervalle tu peux récupérer tous les élements sans utiliser la récursivité.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Citation Envoyé par poof65
    Tu utilise quel sgbd ?
    Euh en local MySQL 5.0.19. Sinon en ligne je serai sur un mutualisé d'OVH…

    Citation Envoyé par poof65
    Avec mysql je ne crois pas qu'on puisse faire des requêtes récursives.
    Si tu as le temps et envie de simplifier un peu le problème tu peux jeter un coup d'oeil sur cette page.
    http://sqlpro.developpez.com/cours/arborescence/
    Avec une représentation des données par intervalle tu peux récupérer tous les élements sans utiliser la récursivité.
    J'ai bien peur qu'il faille que j'utilise la récursivité parce que dans la table j'ai comme élément "cat_father_id" et non pas les bornes qu'il faudrait pour utiliser les intervalles…

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Bon j'ai avancé un peu
    J'ai mis ce code qui me donne l'arborescence sur 2 niveaux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    $query = "SELECT cat_id, cat_name, cat_father_id FROM category WHERE cat_father_id = '' ORDER BY cat_id DESC";
    	$categoryArray = $db->select($query);
     
     for ($i=0; $i<count($categoryArray); $i++){ 
     	echo $categoryArray[$i]['cat_name'];
    	echo "<br>";
     
    	$query2 = "SELECT cat_id, cat_name, cat_father_id FROM category WHERE cat_father_id = ".$categoryArray[$i]['cat_id']." ORDER BY cat_id ASC";
    	$subCategoryArray = $db->select($query2);
     
    	if (!empty($subCategoryArray)) {
     		for ($j=0; $j<count($subCategoryArray); $j++){
     			echo "--->".$subCategoryArray[$j]['cat_name'];
     			echo "<br>";
     		}
     	}
     }
    L'inconvénient c'est que là je suis obligé d'ajouter manuellement une requête par niveau de sous-catégorie (= sous-rubrique)… c'est pas bien du tout… mais je ne sais pas faire autrement…

    Comment feriez-vous pour automatiser la recherche de sous-catégorie tant qu'il existe un cat_father_id ?
    J'imagine bien un truc du genre :
    WHILE ($subCategoryArray[$TrucBidule]['cat_father_id'] != '')
    mais je suis incapable d'aller plus loin…

    Merci pour vos conseils

Discussions similaires

  1. [Exercice] Aide sur requête
    Par Dobyan08 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 09/02/2006, 15h47
  2. Aide sur requêtes
    Par Virgile59 dans le forum Access
    Réponses: 6
    Dernier message: 08/02/2006, 16h05
  3. aide sur requête sql
    Par Vodkha dans le forum Langage SQL
    Réponses: 9
    Dernier message: 30/08/2005, 17h53
  4. Aide sur Requête SQL
    Par devdev dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/05/2005, 12h33
  5. Besoin d'aide sur requête croisée
    Par keawee dans le forum Access
    Réponses: 7
    Dernier message: 18/11/2004, 09h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo