SQL/PHP simple... mais je réussis pas... [Résolu/Fermé]

Signaler
Messages postés
245
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
-
Messages postés
245
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
-
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

8 réponses

Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
851
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) ?
Messages postés
245
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
12
c'est SQL (ça fait longtemps que j'ai pas fait ça lol)
c'est SQL (ça fait longtemps que j'ai pas fait ça lol)
Messages postés
245
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
12
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
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.
                        
                
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 ?
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
851
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.
Messages postés
245
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
12
ok ben je vais essayer, je tiens au courant d'ici 2-3 jours
merci à vous
Messages postés
245
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
12
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
Messages postés
245
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
12
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)