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 :

Requetes sur deux tables avec plusieurs retour


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de IP-Fix
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    421
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 421
    Par défaut Requetes sur deux tables avec plusieurs retour
    Re-bonjour !

    Alors j'ai bien noté les conseil sur le * ainsi que comment me servir de AS et de JOIN quand il me retourne un champs, par contre j'ai maintenant besoin d'un join qui me retourne la liste des items ( plusieurs ) qui peuvent etre laissé par le monstre.

    J'ai une table item qui contiens les item ( id , nom ).
    J'ai une table monstre_loot qui contiens les associations item / monstre ( id / id_item, id_monstre )

    Voici ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT 
    monstre.nom AS nom_monstre,
    item.nom AS item_nom FROM monstre 
    JOIN monstre_loot ON monstre_loot.id_monstre = monstre.id
    Maintenant je suis un peu perdu pour passer a la troisieme table ( item ) et avoir ces nom , de plus je sais pas comment exploité une jointure qui retourne plusieurs resultat pour item .

    Merci d'avance pour votre aide !

  2. #2
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Saluton,
    Citation Envoyé par IP-Fix Voir le message
    Maintenant je suis un peu perdu pour passer a la troisieme table ( item ) et avoir ces nom , de plus je sais pas comment exploité une jointure qui retourne plusieurs resultat pour item .
    Et que penses-tu de cette requête ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT 
    m.nom AS nom_monstre,
    GROUP_CONCAT(i.nom) AS item_noms 
    FROM monstre m
    INNER JOIN monstre_loot ml ON ml.id_monstre = m.id
    INNER JOIN items i ON ml.id_item=i.id
    GROUP BY m.id
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  3. #3
    Membre chevronné Avatar de IP-Fix
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    421
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 421
    Par défaut
    Je pense que c'est ce que je cherchais ! Merci !

    Petite question complémentaire tout de meme comment exploite t'on en php GROUP_CONCAT(i.nom) ?

  4. #4
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Citation Envoyé par IP-Fix Voir le message
    comment exploite t'on en php GROUP_CONCAT(i.nom) ?
    Bien !
    Ça dépend de ce que tu veux en faire.
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    while ($ligne=mysql_fetch_assoc($result)){
             $noms=explode(',',$ligne['noms']);
             // et tous les noms sont dans l'array $noms
            }
    ?>
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  5. #5
    Membre chevronné Avatar de IP-Fix
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    421
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 421
    Par défaut
    Merci !

    Mais j'ai encore un petit probleme ( a prioris le dernier ! )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT 
    m.nom AS nom_monstre,
    GROUP_CONCAT(i.nom) AS item_noms ,
    GROUP_CONCAT(ml.pourcentage) AS item_pourcentage 
    FROM monstre m 
    INNER JOIN monstre_loot ml ON ml.id_monstre = m.id
    INNER JOIN item i ON ml.id_item=i.id 
    GROUP BY m.id
    là mon probleme est que le champs pourcentage de la table monstre_loot (int(3)) me retourne un mechant : [BLOB - 5 o] là ou j'esperais un jolie retour du type : [12,24] par exemple.

    Voila j'arrive pas a m'en sortir

  6. #6
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Citation Envoyé par IP-Fix Voir le message
    mon probleme est que le champs pourcentage de la table monstre_loot (int(3)) me retourne un mechant : [BLOB - 5 o] là ou j'esperais un jolie retour du type : [12,24] par exemple.
    Comment veux-tu qu'une colonne de type INTEGER(3) puisse te retourner une valeur flottante ?
    Par contre, je ne m'explique pas le retour d'un type BLOB.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requete sur deux tables avec tri
    Par ebaoo dans le forum MySQL
    Réponses: 2
    Dernier message: 25/02/2010, 18h41
  2. Réponses: 10
    Dernier message: 11/08/2009, 14h43
  3. requete sur deux tables avec join et coalesce
    Par nifufu dans le forum Requêtes
    Réponses: 14
    Dernier message: 10/02/2009, 13h51
  4. besoin d'aide -> requete sur 2 tables avec count()
    Par parksto dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/10/2005, 19h06
  5. Requete sur deux tables
    Par ReaseT dans le forum ASP
    Réponses: 13
    Dernier message: 07/02/2005, 16h18

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