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 :

Requete entre 2 tables.


Sujet :

MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2003
    Messages : 22
    Points : 8
    Points
    8
    Par défaut Requete entre 2 tables.
    Bonjour,

    Je ne suis pas un pro du SQL!
    J'utilise MySQL pour travailler avec PhP.
    Je voudrais faire une requête entre 2 tables de ma base de données.
    Voici comment je m'y prend!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT categories. * , mod_ressources. * 
    FROM  `categories` , mod_ressources
    WHERE categories.id = mod_ressources.id_categorie
    ORDER  BY categories.titre AND mod_ressources.nom
    Le problème, lorsque je le traite comme ca, dans ma page PhP, c'est qu'il me sort autant de categories que de mod_ressources.

    Ce que je veux faire c'est d'afficher les categories de mes ressources. Par exemple, mod_ressources possède 20 enregistrements avec une certaines categories.

    Dans ma page PHP. Je veux afficher en en-tête ma categories et afficher les ressources que contient cette catégories. Est-ce que je suis mieux d'y aller avec 2 requêtes distincte SQL ou je peux procéder avec MySQL pour ce traitement!

    Merci de votre aide.

    bonne journée!

  2. #2
    Membre averti Avatar de Vince
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    369
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 369
    Points : 366
    Points
    366
    Par défaut
    Si j'ai bien compris ta question tu dois avoir un résultat du type :
    Groupe 1 --> Machin
    Groupe 1 --> Truc
    Groupe 1 --> Bidule
    Groupe 2 --> chose
    Groupe 2 --> ...

    Or tu ne veux afficher que
    Groupe 1 :
    - Machin
    - Truc
    - Bidule

    Groupe 2 :
    - chose
    - ...


    Tu dois faire un GROUP BY :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT .....
    ...
    ORDER BY...
    GROUP BY categories.titre

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2003
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    Un grand merci. Ca marche parfaitement.

    bye!

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2003
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    Bon, Je pensais que c'était résolu mon problème, mais non, la je me retrouve avec seulement 1 enregistrement par catégories.

    Qu'est-ce qui n'est pas correct dans ma requete? J'ai penser que c'était ma clause WHERE, mais ca ne semble pas être le cas.

    Merci de m'aider.

  5. #5
    Membre averti Avatar de Vince
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    369
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 369
    Points : 366
    Points
    366
    Par défaut
    Dsl j'ai repensé aprés que ça ne devait pas être ça...
    Ce que tu peux faire c'est une requete sur ta table catégorie avec le GROUP BY pour n'avoir chaque catégorie qu'une fois, puis tu lis ton jeu d'enregistrement (boucle), et tu mets le id l'enregistrement courant lu en paramètre de ta requete SELECT .... WHERE categorie.id='$id_courant'. Dsl c'est pas évident à expliquer sans code...

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2003
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    Je ne suis pas sur de très bien comprendre ce que tu veux dire.
    Je fais une requête pour avoir mes catégories du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Select * from categories;
    et j'y fait une boucle ensuite, dans ma boucle j'y fait quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Select * from mod_ressources where id='$idcategories';
    C'est bien ca? Si oui, c'est peut-être moi, mais je vais me retrouver toujours avec les mêmes requetes dans ma boucle non? Parce que si je refait une requete a chaque boucle, et bien il va recommencer a zero non?

    Merci, bye!

  7. #7
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    ah ok je viens de comprendre ton problème
    le mieux c'est de faire 1 seule grosse requête c'est beaucoup plus rapide et ensuite dans ton code php tu utilises una variable pour savoir si tu as changé de catégorie

    inspire toi de ca :
    http://www.developpez.net/forums/vie...114910#1114910

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2003
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    mathix, je ne sais pas ou tu as vue une seule grosse requete dans le lien que tu as inscrits. J'ai vraiment rien compris dans ce qui a été traiter dans le sujet de discussion. D'après ce que j'ai compris, ca revient au même que ce que Vince m'a parlé!

    J'ai essayer ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    while($rCategories = mysql_fetch_array($REQCategorie)
    {
       while($rRess = mysql_fetch_array($REQRessource)
      {
         if($rRess["id_categorie"] == rCategories["id"])
         {
              echo "Titre";
          }
       }
    }
    Mais voilà, ca ne donne pas le resultat que je veux. Il me sort aussi les categories qui ne contiennent pas de ressources.

    J'ai chercher aussi du coter du DISTINCT, mais ca ne semble pas donner le resultat que je recherche aussi.

    Merci de votre aide.

  9. #9
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    ce que j'appelle "grosse requête" c'est la 1ère requête que tu as proposé
    ce que tu fais c'est récupérer toutes les ressources et les catégories avec un tir par catégories
    en suite tu fais une seule boucle "while" et tu testes si tu es encore dans la même catégorie que précédemment à l'aide du code que j'ai proposé

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2003
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    Ok, mais je dois etre trop debutant parce que je comprends pas a quoi ton lien s'applique a moi, j'ai essayer et c'est loin de fonctionner!

    Ca me prendrais 2 boucles while.
    - une pour avoir la liste des categories..
    - et l'autre pour verifier si la ressources contient la categories

    entk, du moin il me semble que ca devrait être comme ca non?
    Parce que sinon, je comprend vraiment pas!

    Merci d'eclairer mon esprit.

  11. #11
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    non en fait tu fais une seule requete (et donc une seule boucle while) où tu récupère la resosurce et le service associé
    par exemple ta requête retourne ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ressource     | service    
    --------------+----------------
    res2          | serv1
    res23         | serv1
    res5          | serv2
    res10         | serv2
    res17         | serv2
    et comme ca tu fais une boucle while sur ce résultat et tu testes à chaque fois si le service à changé ou pas pour la mise forme de tes résultats

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2003
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    ok, merci, ca la fonctionner.

    bye

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

Discussions similaires

  1. [MySQL] requete entre deux tables!
    Par laipreu dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 26/11/2008, 14h53
  2. Requete entre 2 table et récupération d'une ligne
    Par lechevin dans le forum Langage SQL
    Réponses: 13
    Dernier message: 12/01/2006, 13h54
  3. requete entre deux tables
    Par drakov666 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 29/11/2005, 11h51
  4. [Débutant] requete entre plusieurs tables
    Par xufux dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/08/2005, 14h00
  5. requete entre trois tables
    Par fpouget dans le forum Langage SQL
    Réponses: 8
    Dernier message: 08/03/2005, 21h44

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