[SQL ACCESS] problème de syntaxe avec les JOIN

problème de syntaxe avec les JOIN [SQL ACCESS] - SQL/NoSQL - Programmation

Marsh Posté le 26-02-2003 à 16:02:22    

Bonjour tout le monde,
 
je pêche sur une connerie là et je m'en sors pas. Vous pouvez m'aider ?
 
J'ai écrit la requête suivante dans le code d'ACCESS et il me dit "erreur de syntaxe" :( :
 

Code :
  1. db.Execute ("INSERT INTO selectParcoursGrp(Parcours) SELECT DISTINCT Parcours FROM ((Parcours INNER JOIN Sections ON Parcours.Parcours=Section.Parcours) INNER JOIN (Lignes ON Parcours.Ligne=Lignes.Ligne)) WHERE Sections.Lieu_fin_section= " & arret1 & " AND Lignes.Nom= " & lignesSelect(i) & ";" )


 
Vous savez où est le problème parce que moi je ne le vois pas ...
 
Merci. :jap:

Reply

Marsh Posté le 26-02-2003 à 16:02:22   

Reply

Marsh Posté le 26-02-2003 à 16:44:07    

C Peut-être ici que ça merde ( ' en gras in the text)
 
...
Sections.Lieu_fin_section= '" & arret1 & "' AND Lignes.Nom= '" & lignesSelect(i) & "';" )

Reply

Marsh Posté le 26-02-2003 à 16:52:33    

non, ce ne sont pas les nains-postrophe. :( Merci quand même.
 
Autre chose ?

Reply

Marsh Posté le 26-02-2003 à 16:56:23    

Te revoila avec ta signature toi ? Grrrrr.... :fou:
 
Dans ce genre de cas, le meilleur moyen de trouver l'erreur consiste à faire un echo de la requete, dans un debugger par exemple.
 
Mais pourquoi rajoutes tu le ";" à la fin ? Ca m'étonnerait pas que ça vienne de la...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 26-02-2003 à 19:15:43    

désolé :D
 
M'enfin, je ne te déteste point...et apparemment toi non plus puisque tu m'aide ! Je t'en remercie d'ailleurs. :)
 
Je vais essayer demain de le mettre en écho dans un débugger comme tu me le conseilles. Pour le ";" à la fin, j'ai toujours fait comme ça et c'est toujours passé.

Reply

Marsh Posté le 27-02-2003 à 09:51:52    

Sans être vraiment sûr je te conseille la syntaxe suivante (qui m'est donnée par Access himself)
 


FROM (Parcours INNER JOIN Sections ON Parcours.Parcours=Section.Parcours) INNER JOIN Lignes ON Parcours.Ligne=Lignes.Ligne


 
A noter la suppression de qq parentheses par rapport à ta version, notament celle apres le second INNER JOIN qui me semble pouvoir poser problème


Message édité par tegu le 27-02-2003 à 09:52:20
Reply

Marsh Posté le 27-02-2003 à 10:05:30    

Bon, j'ai essayé comme tu me l'a montré mais Access refuse encore. Ce ne serait pas un problème avec le INSERT INTO ?

Reply

Marsh Posté le 27-02-2003 à 10:07:26    

Oui c'est sûrement ça alors
 
edit: ben non c'est pas ça, mais je suis vraiment pas réveillé moi, va être temps quand même
 


Message édité par tegu le 27-02-2003 à 11:32:16
Reply

Marsh Posté le 27-02-2003 à 10:11:32    

c'est pas encore résolu ce topic ? echo de la requête dans un debugger j'ai dit :o


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 27-02-2003 à 10:15:27    

Et tu obtiendras dans ton debugger le message d'erreur Access suivant:
Erreur de syntaxe
 
:)

Reply

Marsh Posté le 27-02-2003 à 10:15:27   

Reply

Marsh Posté le 27-02-2003 à 10:19:32    

Tegu a écrit :

Et tu obtiendras dans ton debugger le message d'erreur Access suivant:
Erreur de syntaxe
 
:)
 


Il verra surtout la requete telle qu'elle est transmise à Access, sans les noms de variables de VB :sarcastic:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 27-02-2003 à 10:24:16    

Ben j'espère pour lui que sous VB il l'a fait depuis longtemps en mettant des points d'arret et en vérifiant les valeurs !!!
 
D'ailleurs où est il écrit que cette requete est lancée via VB ?
 
J'espère Mad666 que tu n'as pas Access sur ta machine, auquel cas tu l'aurais testé directement ta requête, hein ? Rassure moi.
 
 


Message édité par tegu le 27-02-2003 à 10:27:24
Reply

Marsh Posté le 27-02-2003 à 11:09:39    

pas d'énervement Harkonnen (halala, c'est vérifié, ils ne sont vraiment pas passifs ces Harkonnen ! :D)
 
Bien entendu que je l'ai effectué ce debug avec les points d'arrêt et tout.
 
Bon, j'ai reformulé ma requête de la sorte et là ça fonctionne :
"INSERT INTO selectParcoursGrp ( Parcours, arret ) SELECT Parcours.Parcours, Sections.Lieu_fin_section FROM Lignes INNER JOIN (Parcours INNER JOIN Sections ON Parcours.Parcours = Sections.Parcours) ON Lignes.Ligne = Parcours.Ligne WHERE Sections.Lieu_fin_section = " & arret1 & " AND Lignes.Ligne = " & lignesSelect(i) & ";"
 
En fait, j'ai l'impression qu'il n'est pas possible d'avoir deux fois la même table du même côté d'un JOIN.

Reply

Marsh Posté le 27-02-2003 à 11:13:39    

Tegu a écrit :

J'espère Mad666 que tu n'as pas Access sur ta machine, auquel cas tu l'aurais testé directement ta requête, hein ? Rassure moi.


euh... :whistle: ben en fait je ne veux pas me servir d'ACCESS pour générer des requêtes car je souhaite apprendre SQL correctement. :ange:
 
patapai :sweat:


Message édité par Mad666 le 27-02-2003 à 11:16:29
Reply

Marsh Posté le 27-02-2003 à 11:20:17    

Faudrait savoir, tu veux que ta requête fonctionne sur Access ou apprendre SQL correctement ?
Paske bon...
 
 

Reply

Marsh Posté le 27-02-2003 à 11:23:39    

ben désolé. Pour moi je veux apprendre SQL et pour le boulot, je veux que ça fonctionne sous ACCESS, mais ça c'est secondaire ! :D
 
N'empêche que j'ai résolu le problème :)
 
Merci pour votre aide. :jap:

Reply

Marsh Posté le 27-02-2003 à 11:48:11    

Alors pour information, j'ai pris qq minutes de mon temps pour aller aux fonds des choses (j'aime comprendre).
J'ai reproduit ta base et ta requête initiale (celle qui bug)
Le problème vient bien de la parenthese qui suit le second INNER JOIN comme je l'avais suggéré au début.
 
La requete qui suit fonctionne


INSERT INTO unetable ( Parcours )
SELECT DISTINCT Parcours.Parcours
FROM ((Parcours INNER JOIN Sections ON Parcours.Parcours = Sections.Parcours) INNER JOIN Lignes ON Parcours.Ligne = Lignes.Lignes);


Le détail qui a peut etre cloché c'est le champ Parcours que tu n'avais pas préfixé par le nom de table mais l'erreur aurait du concerner, après ma correction de parenthese, l'ambiguite du champ et pas la syntaxe !
 
D'ailleurs si tu avais ouvert Access et fait ta requete dedans en mode graphique (30sec chrono ici) tu aurait sans doute trouvé seul...
 
M'enfin bon, ça marche c'est déjà ça.
 
a+

Reply

Marsh Posté le 27-02-2003 à 12:07:33    

ah merci pour la précision du nom de la table Parcours, je n'y avait pas pensé. C'est vrai, que la deuxième fois je l'ai précisé.
 
C'est noté, j'essaierai avec ACCESS la prochaine fois avant. :jap:


Message édité par Mad666 le 27-02-2003 à 12:11:28
Reply

Sujets relatifs:

Leave a Replay

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