Problème requête sql

Problème requête sql - PHP - Programmation

Marsh Posté le 04-07-2005 à 09:37:14    

Bonjour à tous,
Je suis en train de créer une page de mon site qui accède à une base de données et affiche suivant ma requête sql, le contenu voulu. Mais malheureusement, lorsque j'essaie d'accéder à cette page, les messages d'erreurs suivants apparaissent:
 
Warning: odbc_exec(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Instruction SQL non valide; 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' ou 'UPDATE' attendus., SQL state 37000 in SQLExecDirect in c:\program files\easyphp1-8\www\web\asie\plandeslivraisons_a.php on line 81
 
Warning: odbc_fetch_row(): supplied argument is not a valid ODBC result resource in c:\program files\easyphp1-8\www\web\asie\plandeslivraisons_a.php on line 83

 
Il me semble, en ayant regardé un peu sur le net que c'est peut-être une erreur de syntaxe mais je ne vois pas laquelle vu que j'ai repris cette requête telle quelle depuis Access où tout fonctionne correctement.
Voilà ma requête comme écrite sur ma page internet (elle est assez énorme...):
 
<?
     $valeur = odbc_exec( $cnx, "SELECT Contacts.Nom AS Fournisseur, [Plan livraison].[Numéro fournisseur], Contacts_1.Nom AS Client, [Plan livraison].[Numéro client], Contacts_1.Groupe, Contacts_2.Nom AS Client2, [Plan livraison].[Numéro client2], Articles.Libellé AS Article, [couleur fournisseur] & "-" & [couleur client] AS Couleur, [Plan livraison].[Total à livrer], [Plan livraison].[Solde à livrer], [Plan livraison].[Pas confirmé], [Plan livraison].[En retard], [Plan livraison].[Semaine courante], [Plan livraison].[Dans 1 semaine], [Plan livraison].[Dans 2 semaines], [Plan livraison].[Dans 3 semaines], [Plan livraison].[Dans 4 semaines], [Plan livraison].[Solde à planifier], [Plan livraison].[Numéro article], [Plan livraison].[Numéro couleur], [Plan livraison].[Numéro semaine courante] FROM ((((Contacts INNER JOIN [Plan livraison] ON Contacts.Numéro = [Plan livraison].[Numéro fournisseur]) INNER JOIN Contacts AS Contacts_1 ON [Plan livraison].[Numéro client] = Contacts_1.Numéro) INNER JOIN Articles ON [Plan livraison].[Numéro article] = Articles.Numéro) INNER JOIN Couleurs ON [Plan livraison].[Numéro couleur] = Couleurs.Numéro) LEFT JOIN Contacts AS Contacts_2 ON [Plan livraison].[Numéro client2] = Contacts_2.Numéro ORDER BY Contacts.Nom, Contacts_1.Nom, Articles.Libellé, [couleur fournisseur] & "-" & [couleur client]" );
     $query  = "SELECT Contacts.Nom AS Fournisseur, [Plan livraison].[Numéro fournisseur], Contacts_1.Nom AS Client, [Plan livraison].[Numéro client], Contacts_1.Groupe, Contacts_2.Nom AS Client2, [Plan livraison].[Numéro client2], Articles.Libellé AS Article, [couleur fournisseur] & "-" & [couleur client] AS Couleur, [Plan livraison].[Total à livrer], [Plan livraison].[Solde à livrer], [Plan livraison].[Pas confirmé], [Plan livraison].[En retard], [Plan livraison].[Semaine courante], [Plan livraison].[Dans 1 semaine], [Plan livraison].[Dans 2 semaines], [Plan livraison].[Dans 3 semaines], [Plan livraison].[Dans 4 semaines], [Plan livraison].[Solde à planifier], [Plan livraison].[Numéro article], [Plan livraison].[Numéro couleur], [Plan livraison].[Numéro semaine courante] FROM ((((Contacts INNER JOIN [Plan livraison] ON Contacts.Numéro = [Plan livraison].[Numéro fournisseur]) INNER JOIN Contacts AS Contacts_1 ON [Plan livraison].[Numéro client] = Contacts_1.Numéro) INNER JOIN Articles ON [Plan livraison].[Numéro article] = Articles.Numéro) INNER JOIN Couleurs ON [Plan livraison].[Numéro couleur] = Couleurs.Numéro) LEFT JOIN Contacts AS Contacts_2 ON [Plan livraison].[Numéro client2] = Contacts_2.Numéro ORDER BY Contacts.Nom, Contacts_1.Nom, Articles.Libellé, [couleur fournisseur] & "-" & [couleur client]" ;  
{?>
 
Merci d'avance

Reply

Marsh Posté le 04-07-2005 à 09:37:14   

Reply

Marsh Posté le 04-07-2005 à 09:42:39    

La syntaxe à crochets, je suis pas sûr que ce soit valide en-dehors d'access, non?
Essaie une requête toute simple, pour commencer, plutôt...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 04-07-2005 à 09:47:06    

skeye a écrit :

La syntaxe à crochets, je suis pas sûr que ce soit valide en-dehors d'access, non?
Essaie une requête toute simple, pour commencer, plutôt...


 
Je pense que ça doit jouer car la requête suivante fonctionne correctement:
 
"SELECT PL.Num, PL.[Numéro facture], PL.[Date facture], PL.Traitée FROM PL WHERE (((PL.Traitée)=False)) ORDER BY PL.[Date facture] DESC"

Reply

Marsh Posté le 04-07-2005 à 09:50:05    

Essaie des crochets sur un nom de table...et si ça marche essaie avec un INNER JOIN et un LEFT JOIN...bref vérifie un par un tous les éléments de ta syntaxe qui peuvent poser problème...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 04-07-2005 à 09:53:16    

skeye a écrit :

Essaie des crochets sur un nom de table...et si ça marche essaie avec un INNER JOIN et un LEFT JOIN...bref vérifie un par un tous les éléments de ta syntaxe qui peuvent poser problème...


 
Ok, je vais essayer comme ça alors, et je reviens faire un tour par là si ça ne fonctionne pas...

Reply

Marsh Posté le 04-07-2005 à 10:15:38    

[:rofl]


---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le 04-07-2005 à 11:17:46    

Reply

Marsh Posté le 04-07-2005 à 11:30:05    


La tête de la requête pour Access  :D
Ca me rappelle mes tout débuts ça  :D


---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le 04-07-2005 à 11:32:17    

Zzozo a écrit :

La tête de la requête pour Access  :D
Ca me rappelle mes tout débuts ça  :D


 
En fait, la base de données, je ne les pas créée, je dois avec ça me débrouiller pour faire un site internet avec accès sur cette base... Et c'est vrai que je ne m'en sors pas....

Reply

Marsh Posté le 06-07-2005 à 09:56:03    

Me revoilà...  
Alors ça fait deux jours que je n'ai pas pu m'occuper de ce problème et je me suis plongée dedans ce matin. Malheureusement, vu mon niveau en sql, je n'arrive pas du tout à m'en sortir...  :(  
Est-ce que quelqu'un pourrait me venir en aide? Si les crochets ne fonctionne pas, que dois-je mettre à la place? Des ' ?
Merci d'avance

Reply

Marsh Posté le 06-07-2005 à 09:56:03   

Reply

Marsh Posté le 06-07-2005 à 09:59:41    

fgiuliano a écrit :

Me revoilà...  
Alors ça fait deux jours que je n'ai pas pu m'occuper de ce problème et je me suis plongée dedans ce matin. Malheureusement, vu mon niveau en sql, je n'arrive pas du tout à m'en sortir...  :(  
Est-ce que quelqu'un pourrait me venir en aide? Si les crochets ne fonctionne pas, que dois-je mettre à la place? Des ' ?
Merci d'avance


des ` plutôt, oui.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 06-07-2005 à 10:08:33    

ben en faisant ça, voilà ta tête de ma requête mais ça ne fonctionne toujours pas...  :(

Reply

Marsh Posté le 06-07-2005 à 10:08:46    

"SELECT Contacts.Nom AS Fournisseur, 'Plan livraison.Numéro fournisseur', Contacts_1.Nom AS Client, 'Plan livraison.Numéro client', Contacts_1.Groupe, Contacts_2.Nom AS Client2, 'Plan livraison.Numéro client2', Articles.Libellé AS Article, 'couleur fournisseur' & "-" & 'couleur client' AS Couleur, 'Plan livraison.Total à livrer', 'Plan livraison.Solde à livrer', 'Plan livraison.Pas confirmé', 'Plan livraison.En retard', 'Plan livraison.Semaine courante', 'Plan livraison.Dans 1 semaine', 'Plan livraison.Dans 2 semaines', 'Plan livraison.Dans 3 semaines', 'Plan livraison.Dans 4 semaines', 'Plan livraison.Solde à planifier', 'Plan livraison.Numéro article', 'Plan livraison.Numéro couleur', 'Plan livraison.Numéro semaine courante' FROM ((((Contacts INNER JOIN 'Plan livraison' ON Contacts.Numéro = ''Plan livraison.Numéro fournisseur'') INNER JOIN Contacts AS Contacts_1 ON ''Plan livraison.Numéro client'' = Contacts_1.Numéro) INNER JOIN Articles ON ''Plan livraison.Numéro article'' = Articles.Numéro) INNER JOIN Couleurs ON ''Plan livraison.Numéro couleur'' = Couleurs.Numéro) LEFT JOIN Contacts AS Contacts_2 ON ''Plan livraison.Numéro client2'' = Contacts_2.Numéro ORDER BY Contacts.Nom, Contacts_1.Nom, Articles.Libellé, 'couleur fournisseur' & "-" & 'couleur client'" );

Reply

Marsh Posté le 06-07-2005 à 10:11:35    

pas des ', des `.
Et séparément autour des noms de tables et des noms de champs, je pense.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 06-07-2005 à 10:13:35    

skeye a écrit :

pas des ', des `.
Et séparément autour des noms de tables et des noms de champs, je pense.


oki, j'avais pas compris... Je vais essayer... et te redis les résultats....

Reply

Marsh Posté le 06-07-2005 à 10:26:08    

Toujours la même chose... Pourtant ça doit bien être possible, non? :(  
 

Reply

Marsh Posté le 06-07-2005 à 10:26:21    

"SELECT Contacts.Nom AS Fournisseur, `Plan livraison`.`Numéro fournisseur`, Contacts_1.Nom AS Client, `Plan livraison`.`Numéro client`, Contacts_1.Groupe, Contacts_2.Nom AS Client2, `Plan livraison`.`Numéro client2`, Articles.Libellé AS Article, `couleur fournisseur` & "-" & `couleur client` AS Couleur, `Plan livraison`.`Total à livrer`, `Plan livraison`.`Solde à livrer`, `Plan livraison`.`Pas confirmé`, `Plan livraison`.`En retard`, `Plan livraison`.`Semaine courante`, `Plan livraison`.`Dans 1 semaine`, `Plan livraison`.`Dans 2 semaines`, `Plan livraison`.`Dans 3 semaines`, `Plan livraison`.`Dans 4 semaines`, `Plan livraison`.`Solde à planifier`, `Plan livraison`.`Numéro article`, `Plan livraison`.`Numéro couleur`, `Plan livraison`.`Numéro semaine courante` FROM ((((Contacts INNER JOIN `Plan livraison` ON Contacts.Numéro = `Plan livraison`.`Numéro fournisseur`) INNER JOIN Contacts AS Contacts_1 ON `Plan livraison`.`Numéro client` = Contacts_1.Numéro) INNER JOIN Articles ON `Plan livraison`.`Numéro article` = Articles.Numéro) INNER JOIN Couleurs ON `Plan livraison`.`Numéro couleur` = Couleurs.Numéro) LEFT JOIN Contacts AS Contacts_2 ON `Plan livraison`.`Numéro client2` = Contacts_2.Numéro ORDER BY Contacts.Nom, Contacts_1.Nom, Articles.Libellé, `couleur fournisseur` & "-" & `couleur client`" );

Reply

Marsh Posté le 06-07-2005 à 10:27:02    

fgiuliano a écrit :

Toujours la même chose... Pourtant ça doit bien être possible, non? :(


essaie comme je te l'avais dit des requêtes plus simples utilisant les mêmes tables et les mêmes mots-clés, pour trouver de qui coince...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 06-07-2005 à 11:03:09    

Ok, alors j'ai fait comme tu disais et j'ai trouvé une erreur de syntaxe:
 
& "-" &
& '-' &
 
Alors l'erreur de départ n'est plus, mais par contre il me met l'erreur suivante:
 
Warning: odbc_exec(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Le moteur de base de données Microsoft Jet ne peut pas trouver la table ou la requête source 'Plan livraison'. Assurez-vous qu'elle existe et qu'elle est correctement orthographiée., SQL state S0002 in SQLExecDirect  
 
Et j'ai vérifié, elle existe et est correctement orthographiée. Tu aurais une idée?

Reply

Marsh Posté le 06-07-2005 à 11:20:46    

Tu l'as mise comment? entre crochets, entre ` ?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 06-07-2005 à 11:23:50    

skeye a écrit :

Tu l'as mise comment? entre crochets, entre ` ?


j'ai essayé les deux mais avec `, il me remet l'erreur d'avant... Peut-être y a-t-il un problème ailleur?!

Reply

Marsh Posté le 06-07-2005 à 11:26:58    

J'ai regardé un peu mieux la requête...tu devrais remplacer  

Citation :


`couleur fournisseur` & "-" & `couleur client`


 
par

Citation :

couleur

dans ton order by.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed