Rechercher : dans
Par :

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

Dernière réponse le 25 sep 2007 à 18:50:00 Jean_2, le 24 sep 2007 à 14:39:12 
 Signaler ce message aux modérateurs

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

1

kij_82, le 24 sep 2007 à 14:50:42

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) ?
~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~

Répondre à kij_82

3

Jean_2, le 24 sep 2007 à 15:06:42

C'est SQL (ça fait longtemps que j'ai pas fait ça lol)

Répondre à Jean_2

2

Jean_2, le 24 sep 2007 à 14:54:10

C'est SQL (ça fait longtemps que j'ai pas fait ça lol)

Répondre à Jean_2

4

Jean_2, le 25 sep 2007 à 11:32:05

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

Répondre à Jean_2

5

piére, le 25 sep 2007 à 12:24:26

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.

Répondre à piére

6

Jean_2, le 25 sep 2007 à 12:30:18

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 ?

Répondre à Jean_2

7

kij_82, le 25 sep 2007 à 13:04:28

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.
~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~

Répondre à kij_82

8

Jean_2, le 25 sep 2007 à 13:58:41

Ok ben je vais essayer, je tiens au courant d'ici 2-3 jours
merci à vous

Répondre à Jean_2

9

Jean_2, le 25 sep 2007 à 18:47:23

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

Répondre à Jean_2

10

 Jean_2, le 25 sep 2007 à 18:50:00

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)

Répondre à Jean_2