Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
751 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [resolu] pb execution requete

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[resolu] pb execution requete

n°1413589
jenny50
Posté le 26-07-2006 à 09:41:21  profilanswer
 

Bonjour à tous,  
 
je rencontre un problème avec ce message qui s'affiche lorsque j'exécute ma page.

Code :
  1. Warning: pg_query() [function.pg-query]: Query failed: ERROR: missing FROM-clause entry for table "fonctions" in C:contact_grp_result.php on line 46
  2. Warning: pg_fetch_object() expects parameter 1 to be resource, boolean given in C:contact_grp_result.php on line 47
  3. SELECT utilisateurs.uti_cle, uti_nom, uti_prenom, uti_mail, uti_tel, uti_portable, min(fonctions.fonc_cle) FROM lienfonc INNER JOIN utilisateurs ON utilisateurs.uti_cle=lienfonc.uti_cle INNER JOIN concessions ON uti_concession=conc_cle INNER JOIN filiales ON conc_filiale=fil_cle INNER JOIN marques ON fil_marque=marq_cle INNER JOIN fonctions ON fonctions.fonc_cle=lienfonc.fonc_cle WHERE 1=1 AND fonctions.fonc_cle=3 GROUP BY utilisateurs.uti_cle, uti_nom, uti_prenom, uti_mail, uti_tel, uti_portable, fil_lib, marq_lib, conc_lib ORDER BY uti_nom, uti_prenom OFFSET 0 LIMIT 5


 
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
mood
Publicité
Posté le 26-07-2006 à 09:41:21  profilanswer
 

n°1413621
mIRROR
Chevreuillobolchévik
Posté le 26-07-2006 à 10:24:37  profilanswer
 

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 [:barthaliastoxik]

n°1413628
omega2
Posté le 26-07-2006 à 10:37:47  profilanswer
 

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?

n°1413635
anapajari
s/travail/glanding on hfr/gs;
Posté le 26-07-2006 à 10:45:39  profilanswer
 

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 ... :o
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

Message cité 1 fois
Message édité par anapajari le 26-07-2006 à 10:46:20
n°1413646
jenny50
Posté le 26-07-2006 à 10:54:10  profilanswer
 

en fait, ma requete est composé en 3 parties :  

Code :
  1. $query = "SELECT utilisateurs.uti_cle, uti_nom, uti_prenom, uti_mail, uti_tel, uti_portable, min(fonctions.fonc_cle)
  2.     FROM lienfonc, fonctions
  3.    INNER JOIN utilisateurs ON utilisateurs.uti_cle=lienfonc.uti_cle
  4.    INNER JOIN concessions ON uti_concession=conc_cle
  5.    INNER JOIN filiales ON conc_filiale=fil_cle
  6.    INNER JOIN marques ON fil_marque=marq_cle
  7.    INNER JOIN fonctions ON fonctions.fonc_cle=lienfonc.fonc_cle
  8.    WHERE 1=1 ";
  9. if ($HTTP_GET_VARS['marque']!=0)
  10. {
  11. $condi=$condi . ' AND marq_cle=' .$HTTP_GET_VARS['marque'];
  12. }
  13. if ($HTTP_GET_VARS['filiale']!=0)
  14. {
  15. $condi=$condi . ' AND fil_cle=' .$HTTP_GET_VARS['filiale'];
  16. }
  17. if ($HTTP_GET_VARS['fonction']!=0)
  18. {
  19. $condi=$condi . ' AND fonctions.fonc_cle=' .$HTTP_GET_VARS['fonction'];
  20. }
  21. if ($HTTP_GET_VARS['nom']!='')
  22. {
  23. $trav=strtoupper($HTTP_GET_VARS['nom']);
  24. $condi=$condi . " AND upper(uti_nom) LIKE '%" .$trav. "%'";
  25. }
  26. $query= $query.$condi. ' GROUP BY utilisateurs.uti_cle, uti_nom, uti_prenom, uti_mail, uti_tel, uti_portable, fil_lib, marq_lib, conc_lib ORDER BY uti_nom, uti_prenom OFFSET ' . $offset . ' LIMIT 5 ';


 
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 :
  1. Warning: pg_query() [function.pg-query]: Query failed: ERROR: missing FROM-clause entry for table "fonctions" in C:contact_grp_result.php on line 46
  2. Warning: pg_fetch_object() expects parameter 1 to be resource, boolean given in C:contact_grp_result.php on line 47


 
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

n°1413682
omega2
Posté le 26-07-2006 à 11:29:00  profilanswer
 

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.

n°1413715
jenny50
Posté le 26-07-2006 à 11:46:10  profilanswer
 

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 :
  1. Warning: pg_query() [function.pg-query]: Query failed: ERROR: missing FROM-clause entry for table "fonctions" in C:contact_grp_result.php on line 57
  2. Warning: pg_fetch_object() expects parameter 1 to be resource, boolean given in C:contact_grp_result.php on line 58
  3. SELECT utilisateurs.uti_cle, uti_prenom, uti_nom, uti_tel, uti_mail, uti_portable FROM utilisateurs, fonctions, lienfonc, concessions, filiales, marques WHERE utilisateurs.uti_cle=lienfonc.uti_cle AND lienfonc.fonc_cle=fonctions.fonc_cle AND conc_cle=uti_concession AND fil_cle=conc_filiale AND marq_cle=fil_marque AND 1=1 AND fonctions.fonc_cle=4 GROUP BY utilisateurs.uti_cle, uti_nom, uti_prenom, uti_mail, uti_tel, uti_portable, fil_lib, marq_lib, conc_lib ORDER BY uti_nom, uti_prenom OFFSET 0 LIMIT 5

n°1413727
omega2
Posté le 26-07-2006 à 11:51:59  profilanswer
 

Là, ton erreur est incompréhensible pour moi aussi. :(

n°1413802
jenny50
Posté le 26-07-2006 à 13:32:25  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [resolu] pb execution requete

 

Sujets relatifs
[Résolu] [C# .net] Récupérer des valeurs dans un GridView[wxWidget] calculer le temps d'éxecution d'un bout de code
[RESOLU] insérer par valeur[Résolu] Récupérer le chemin d'un fichier que l'on upload
[Résolu] Pb utilisation VLOOKUPUne requete qui marche en local mais pas chez mon hebergeur
[RESOLU] Petit soucis de cookiesrequete sql sur un cahmp ou un autre
[résolu pour le momen]faire executer un prog a chaque démarrage de win[Résolu] Désactiver la notification d'exécution de requête SQL
Plus de sujets relatifs à : [resolu] pb execution requete


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR