SQL/PHP simple... mais je réussis pas...

Résolu
Hello.

J'ai un ptit problème simple. Je voudrai afficher dans un array le contenu d'une requete faisant appel à 2 tables (une table s'appelle principale, l'autre commentaire).

Structure :
table principale : id_ma_variable, ma_variable, ptite_info_1, ptite_info_2...
table commentaire : id_mon_commentaire, utilisateur, contenu, ma_variable, note...

logique : dans la table commentaire, chaque utilisateur peut commenter la variable de la table principale.

ma requête : dans mon array, je veux faire afficher ma table principale, et la note moyenne accordée à ma_variable.

et je réussi pas à mettre ça dans un même array.
Par ailleurs, j'ai assayé de passer outre en ajoutant un champ avg(note) dans ma table principale mais j'ai pas réussi...

Vous pouvez m'aider svp ou je suis pas clair ???

Merki
Configuration: Windows XP
Firefox 2.0.0.7

8 réponses

  1. Contributeur
    Bonjour,

    C'est la partie technique PHP que tu n'arrive pas à gérer ou la partie SQL (mise en forme de la requête) ?
    0
    1. c'est SQL (ça fait longtemps que j'ai pas fait ça lol)
      0
  2. c'est SQL (ça fait longtemps que j'ai pas fait ça lol)
    0
    1. Personne pour m'aider ???

      je vais réexpiquer le pb autrement:

      Je veux faire afficher ma requete SQL par un code PHP. C'est la requete sql qui pose pb.

      Structure :
      table principale (id_principal, principal, d'autres champs...).
      table commentaire (id_comm, comm , utilisateur, principal, note...), CHAQUE utilisateur peut donc commenter CHAQUE principal et lui donner une note.
      Dans ma table commentaire, je n'ai pas tous les "principal", car ils sont saisis par appel à une liste déroulante

      Objectif : afficher ma table principale et la note MOYENNE attribuée à chaque "principal".
      PB : en faisant une jointure entre les 2 tables, forcément, je n'ai que la note moyenne pour les "principal" qui ont reçu une note.

      Ce que je veux afficher :

      Principal1 18
      Principal2 un texte pour dire "pas de note" <----- (le code que j'ai fait n'affiche pas quand je n'ai pas de note.)
      Principal3 12

      ... pour tous les "principal" de ma table principale. Le 1er champ vient de ma table principale, le 2eme de ma table commentaire

      Alors, vous en pensez quoi ?
      Est-ce que déjà c'est possible ? Ou ma structure est à changer ?
      Si oui comment ?

      Please help me (milla jojovich, dans le 5eme élément)

      MERCI pour toute contribution
      0
      1. salut jeans en ce qui concerne ton probleme il faudrai crée une autre table intermédiére, en fait cette table va contenir id_principal et id_commantaire dans ce cas la tu vas travailler avec les trois table sur ta requête SQL.
        0
        1. merci pière

          avant que je m'y mettes

          tu me confirmes que cette 3eme table ne contient que id_principal et id_commantaire ?

          ou doit-elle contenir mes autres champs ?
          0
      2. Contributeur
        Ca dépends de tes regles de gestion, par exemple si tu veux gérer une date. Mais sinon tu met juste des deux identifiants de maniere à pouvoir lier les bases ensemble.
        0
        1. ok ben je vais essayer, je tiens au courant d'ici 2-3 jours
          merci à vous
          0
          1. J'ai réussi !!!!!!!!!!!!!!!!!!!!
            Et sans nouvelle table !!!!!!!!!!!!!!!!

            J'ai fait une jointure externe :

            SELECT principale.principal, AVG(note) note_moyenne
            FROM principale LEFT OUTER JOIN commentaire
            ON commentaire.principal=principale.principa
            GROUP BY principale.principal

            ça me renvoit qqchose de ce type : (vous remplacerez les numéros de tel par le moyenne pour chaque champ...

            LI_NOM TEL_NUMERO
            ------- --------------
            DUPONT 01-44-28-52-50
            DUPONT 05-59-45-72-42
            MARTIN 01-47-66-29-55
            BOUVIER NULL
            DUBOIS 04-66-62-95-64
            DREYFUS 04-92-19-18-58
            FAURE NULL
            LACOMBE NULL
            DUHAMEL 01-54-11-43-89
            DUHAMEL 01-55-60-93-8
            0
            1. et bien sur, pas de Doublon au niveau des noms dans la colonne de gauche... (dsl je viens de voir ça dans mon comm précédent)
              0