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

MySQL Discussion :

2 inner join avec group by


Sujet :

MySQL

  1. #1
    Membre du Club
    Homme Profil pro
    Pour le plaisir
    Inscrit en
    Novembre 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pour le plaisir
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2012
    Messages : 171
    Points : 61
    Points
    61
    Par défaut 2 inner join avec group by
    Bonjour,

    Ma requête origine qui me permet de récupérer mes catégorie et sous catégorie

    Code sql : 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
    18
    19
    20
    21
    22
    23
    24
     
     $requete = $bdd->query('
    SELECT
    id,
        C.categ,
        C.sous_categ,
        N.nb_sous_categ
     
    FROM
        categorie C
            INNER JOIN (
                    -- Nombre de sous-catégories par catégorie
                    SELECT categ, COUNT(*) AS nb_sous_categ
                    FROM categorie
                    WHERE id != 1
                    GROUP BY categ
                ) N
                ON C.categ = N.categ
     
    ORDER BY
        N.nb_sous_categ DESC,
        C.categ ASC,
        C.sous_categ ASC
        ');

    j'ai modifier pour récupérer des photos pour chaque catégorie... donc je les récupères sur ma table annonce mais maintenant je vois les doublons des sous catégorie.

    Code sql : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
        $requete = $bdd->query('
    SELECT
    C.id,
        C.categ,
        C.sous_categ,
        N.nb_sous_categ,
        D.categorie,
        D.photo
    FROM
        categorie C
            INNER JOIN (
                    -- Nombre de sous-catégories par catégorie
                    SELECT categ, COUNT(*) AS nb_sous_categ
                    FROM categorie
                    WHERE id != 1
                    GROUP BY categ
                ) N
                ON C.categ = N.categ
            INNER JOIN
        annonce D
        ON C.categ = D.categorie
     
    ORDER BY
        N.nb_sous_categ DESC,
        C.categ ASC,
        D.categorie ASC,
        C.sous_categ ASC
        ');

    comment faire pour ne plus avoir les doublons, ça doit être avec group by mais je ne vois pas ou le mettre (Pas doué avec les jointure)?

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 240
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 240
    Points : 8 514
    Points
    8 514
    Billets dans le blog
    17
    Par défaut
    C'est normal puisque tu joins tes annonces à tes catégories sans filtre particulier, tu auras donc autant de lignes/catégories que d'annonces catégorisées.

    Quel est le critère de sélection de la photo ?

    Donne le schéma de tes tables
    Un échantillon de données
    Et le résultat attendu

  3. #3
    Membre du Club
    Homme Profil pro
    Pour le plaisir
    Inscrit en
    Novembre 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pour le plaisir
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2012
    Messages : 171
    Points : 61
    Points
    61
    Par défaut
    table annonce
    Nom : Capture d'écran_20240520_182029.png
Affichages : 73
Taille : 328,2 Ko

    table categorie
    Nom : Capture d'écran_20240520_182253.png
Affichages : 71
Taille : 441,1 Ko

    Pour récupérer la photo de la table annonce
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        $elements = $requete->fetchAll();
     
        foreach( $elements as $element ) {
    //recupère photo 	
    $acmfoto = unserialize($element['photo']);
     $nbfotoac =  count($acmfoto);	
     if ($nbfotoac > 0){
     $pifotoac = array_rand($acmfoto);
     $bfo1ac = $acmfoto[$pifotoac];
     $acmphoto2 = $siteA.$repfotoac."/".$bfo1ac; 
     }

    le résulta actuelle avec les doublons
    Nom : Capture d'écran_20240520_181541.png
Affichages : 69
Taille : 1,58 Mo

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 240
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 240
    Points : 8 514
    Points
    8 514
    Billets dans le blog
    17
    Par défaut
    Les données sous forme de capture d'écran n'aident pas
    Tu n'as pas donné le résultat SQL attendu pour ton jeu de données
    Tu n'as pas répondu à la question : "Quel est le critère de sélection de la photo ?"

  5. #5
    Membre du Club
    Homme Profil pro
    Pour le plaisir
    Inscrit en
    Novembre 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pour le plaisir
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2012
    Messages : 171
    Points : 61
    Points
    61
    Par défaut
    je comprend ce que tu veut:
    résultat SQL comment je te donne ça ?
    critère de sélection de la photo ??? le champ categorie

Discussions similaires

  1. Inner join avec condition
    Par fguigui dans le forum Langage SQL
    Réponses: 7
    Dernier message: 09/04/2012, 19h40
  2. Inner Join avec des NULL
    Par BLJ.CHAUVIN dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/07/2011, 11h28
  3. INNER JOIN avec un LIKE
    Par Spiritueux dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/10/2008, 17h14
  4. Réponses: 7
    Dernier message: 13/12/2007, 13h32
  5. INNER JOIN avec des données de sélection
    Par EK1_ dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/05/2006, 18h40

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