pb execution requete [resolu] - PHP - Programmation
Marsh Posté le 26-07-2006 à 10:24:37
ERROR: missing FROM-clause entry for table "fonctions" in C:contact_grp_result.php on line 46
c est assez explicite non ?
FROM lienfonc
devient
FROM lienfonc, fonctions
quand je pense que je comprends rien a ta requete
Marsh Posté le 26-07-2006 à 10:37:47
jenny50 > quelques petites questions en passant : a quoi sert le 1=1 dans le where?
Qu'est ce que tu cherches à faire dans ta requette?
Tu cherches à conaitre la fonction minimale de chaque personne pour chaque concessions,filiales,marques ou bien tu cherches à savoir si chaque personne à la fonction 3 pour chacun des couples concessions,filiales,marques?
Dans tous les cas, ca ne serait pas mieux de mettre la table "utilisateurs" en table principale plustôt que la table "lienfonc"?
Est ce que tu cherches à ignorer les personnes qui n'ont aucune fonction ou bien c'est une erreur de raisonement dans la création de la requette?
Marsh Posté le 26-07-2006 à 10:45:39
ayant lu tous les précédents topics de jenny je vais répondre à quelques questions
omega2 a écrit : a quoi sert le 1=1 dans le where? |
sa requete est générée par du code php, comme jenny n'est pas sur d'avoir des clauses where a chaque fois, dans la requete de base il y a 1=1 auquel elle concate les clauses where supplémentaires ( et si y'en a pas ça marche quand même)
omega2 a écrit : Qu'est ce que tu cherches à faire dans ta requette? |
ça elle pourra pas te répondre ...
Mais en gros elle cherche a obtenir la liste de tous les utilisateurs ainsi que leur fonction, sachant qu'il y a une relation 1-N entre utilisateurs et fonctions mais qu'elle ne veut voir apparaitre qu'une seule fois chaque utilisateurs. A ce sujet je te conseille la lecture de l'avant dernier topic de jenny( au moins pour la rigolade)
omega2 a écrit : Tu cherches à conaitre la fonction minimale de chaque personne pour chaque concessions,filiales,marques ou bien tu cherches à savoir si chaque personne à la fonction 3 pour chacun des couples concessions,filiales,marques? |
réponse probable: les deux ...
omega2 a écrit : Dans tous les cas, ca ne serait pas mieux de mettre la table "utilisateurs" en table principale plustôt que la table "lienfonc"? |
réponse probable: ça change quoi ???
omega2 a écrit : Est ce que tu cherches à ignorer les personnes qui n'ont aucune fonction ou bien c'est une erreur de raisonement dans la création de la requette? |
réponse probable: oui
Marsh Posté le 26-07-2006 à 10:54:10
en fait, ma requete est composé en 3 parties :
Code :
|
Ce que je souhaite est d'afficher ma liste de user avec nom, prenom, tel, portable et mail. Sur le nom je peux cliquer pour avoir plus de détail (j'utilise la clé du user). Le problème que j'ai rencontré c'est les doublons. D'où mon min(fonctions.fonc_cle).
Cette requete fonctionne pour ma recherche par marque, filiale et nom. Pour la recherche par fonction, ça me mets cette erreur :
Code :
|
mIRROR : j'ai changé mais cette fois il m'ajoute une autre erreur en plus des autres, Warning: pg_query() [function.pg-query]: Query failed: ERROR: missing FROM-clause entry for table "lienfonc" in C:contact_grp_result.php on line 54
Et meme dans PG ADMIN la requete ne s'execute plus
Marsh Posté le 26-07-2006 à 11:29:00
anapajari a écrit : réponse probable: les deux ... |
Si elle veut les deux à la fois, il lui faut faire un "left outer join" sur "fonctions", faire le min sur "lienfonc.fonc_cle" et récupérer en plus "fonctions.fonc_cle" si disponible. De cette maniére, elle saura si la personne à cette fonction et qu'elle est sa fonction minimale.
Mais bon, peut être que
anapajari a écrit : réponse probable: ça change quoi ??? |
Heu, aprés relecture rien vu que c'est des "inner join" donc la même chôse qu'un "table1,table2". J'ai trop l'habitude des "outer join" et en fait, j'avais quasiment jamais vu de "inner join" dans une véritable requette.
jenny50 a écrit : j'ai changé mais cette fois il m'ajoute une autre erreur en plus des autres |
Au vu de la nouvelle requette, c'est normal.
En rajoutant le ",fonctions" juste derriére le "WHERE lienfonc", t'as cassé l'enchainement des jointures vu que la table "lienfonc" n'est plus relié par jointure aux autres tables. En faisant ça, tu ne peux plus utiliser, dans les jointures, des colones de la table "lienfonc".
mIRROR t'avais dit de mettre ça mais il n'avait surement pas vu que la table est relié aux autres par une jointure.
PS : Maintenant que j'ai réalisé que t'utilises des "inner join", je ne vois plus de raison au message d'erreur que t'as. A la limite, tu peux essayer en mettant une relation classique entre les tables (table1,table2,table3) à la place des jointures (table1 inner join table2 on ...) en déplacant dans la clause where les conditions reliant les tables (par exemple le utilisateurs.uti_cle=lienfonc.uti_cle ) mais rien ne dit que ca réglera le probléme.
PS2 qui n'a rien à voir avec ton probléme : Dans ton "group by" t'as des colones qu'on ne retrouve pas dans la partie "select",tu risques donc de te retrouver avec des doublons.
Marsh Posté le 26-07-2006 à 11:46:10
Citation : A la limite, tu peux essayer en mettant une relation classique entre les tables |
J'ai fait voici le résultat, je retrouve tjs mon erreur... ça commence à m'énerver, en plus c'est seulement pour la recherche par fonction. ça me prend le choux!!!!
Code :
|
Marsh Posté le 26-07-2006 à 13:32:25
LA SOLUTION EST TROUVEE :
Le problème venant d'un seul est unique champs dans ma requete : "utilisateurs.uti_cle" il fallait mettre "lienfonc.uti_cle".
Voilà merci à tous
Marsh Posté le 26-07-2006 à 09:41:21
Bonjour à tous,
je rencontre un problème avec ce message qui s'affiche lorsque j'exécute ma page.
Comme vous le voyez j'ai fait un echo de ma requete. Lorsque je l'exécute dans PG ADMIN III elle fonctionne... Ques veut dire l'erreur??
Message édité par jenny50 le 26-07-2006 à 13:32:44