J'en appelle aux Dieux du SQL (et aux déesses ;o) [SQL] - Programmation
Marsh Posté le 06-08-2001 à 12:30:10
Code :
|
[edtdd]--Message édité par Fred999--[/edtdd]
Marsh Posté le 06-08-2001 à 12:54:46
Merci !
J'ai essayé et :
Je suis sous access, d'où (peut être) l'erreur suivante :
"Erreur de syntaxe (opérateur absent)" C'est au niveau du FROM que ça coince. Aie aie aie, t'as une idée ? Ou quelqu'un d'autre hein ! Sans le FROM ca marche pas evidemment.
Bon, je vais manger, on en reparle après
Marsh Posté le 06-08-2001 à 14:11:30
Fred999 a écrit a écrit :
|
Déja ça m'étonnerais que ça marche en SQL, en C peut être , mais en SQL il vaut mieux mettre
[code]where
tele.ID <> empl.ID[\code]
Marsh Posté le 06-08-2001 à 14:21:23
Ouais, Seblamb a raison sur ce point. Mais j'ai besoin seulement de la première requete. La syntaxe SQL est :
UPDATE table
SET newvalue
WHERE criteria;
Pas de trace du FROM, car cette requete sert à la MAJ d'un champ selon un critère (ex : hausse de 10%). Et non pas à partir d'un autre champ.
Si j'enlève la ligne du FROM il prend les empl.telephone et empl.id comme paramètre et je dois rentrer une valeur.
Cette opération est elle possible sous ACCESS
Marsh Posté le 06-08-2001 à 14:22:09
Je veux dire : cette opération de MAJ à partir d'une colonne d'une autre table ?
Marsh Posté le 06-08-2001 à 14:24:04
Alorseuh ma syuntaxe marcherait trèèès bien sous SQL Server, j'ai pioché dans mes procs stockées.
Fallait pas utiliser Access
Marsh Posté le 06-08-2001 à 14:25:56
Ce n'est pas Access qui est en cause, sous Oracle la syntaxe n'est pas valable non plus : j'ai déjà eu ce problème et il est impossible d'utiliser une jointure pour effectuer un update
Marsh Posté le 06-08-2001 à 14:26:40
Fred999 a écrit a écrit : Alorseuh ma syuntaxe marcherait trèèès bien sous SQL Server, j'ai pioché dans mes procs stockées. Fallait pas utiliser Access |
Aucun rapport avec Access, l'opérateur différent dans la norme SQL c'est '<>'.
Marsh Posté le 06-08-2001 à 14:30:22
Euh, je précise : je parlais de la jointure dans l'update, pas de l'opérateur '!=', qui est reconnu parfaitement sous Oracle.
[edtdd]--Message édité par irulan--[/edtdd]
Marsh Posté le 06-08-2001 à 14:32:37
Bon, alors on va faire les choses comme un goret :
Code :
|
Et != est reconnu sous SQL Server.
Et je vous emmerde
Irulan >
Marsh Posté le 06-08-2001 à 14:34:52
MAIS ALORS, COMMENT FAIRE POUR MON PB ?????
Je veux bien croire que cette syntaxe marche pas mais il y a bien une alternative ? Il y toujours une alternative en principe... une porte de sortie quoi !
Marsh Posté le 06-08-2001 à 14:35:00
Fred999> Tiens pendant que tu es là à proposer des trucs qui ne marchent pas tu n'aurais pas une idée pour mon truc de PB, par hasard ?
Xaero > Dans ce cas on ne peut pas, et je ne connais aucun moyen de contournement. A part créer une table temporaire (car dans un insert tu peux effectuer un jointure) et la copier dans ta table définitive.
[edtdd]--Message édité par irulan--[/edtdd]
Marsh Posté le 06-08-2001 à 14:41:30
Tu veux dire créer une vue ?
L'opérateur INSERT demande le INTO sous ACCESS. Et ca équivaut à insérer des tuples, pas à les mettre à jour. Resultat : tout les numéros de tél sont au début de la table et ensuite on trouve les enregistrements (employes). Pas Top, hein ?
Si la solution est de créer une vue (car une vue sert entre autre à stocker des resultats temporaires) je vais essayer.
Marsh Posté le 06-08-2001 à 14:49:11
xaero > nan nan ce que je veux dire c'est dans ton script créer une table temporaire (du genre TMP_EMPLOYES) que tu remets à zéro à chaque exécution, qui sera la copie de ta table EMPLOYES, à ceci près que dans le script d'alimentation (qui sera donc en insert) tu pourras utiliser une jointure.
D'ailleurs ça se rapproche de ce que proposait Fred999.
[edtdd]--Message édité par irulan--[/edtdd]
Marsh Posté le 06-08-2001 à 14:59:49
J'ai peur de pas tout saisir dans ta soluce. Pour commencer je n'utilise pas de script, étant sous Access. Mais on peut toujours faire des macros qui appellent les requetes.
Bon, si j'ai bien compris, on va créer une table temporaire en effectuant la jointure entre emp et tel, puis on delete la table emp pour garder la temporaire. That's it ? or not ?
Marsh Posté le 06-08-2001 à 15:27:56
Well, j'ai réussi à faire la jointure entre Emp et Tel et stocker les results dans une table Tmp
Je pense que maintenant je vais supprimer de la table EMPLOYES les personnes que je trouve dans cette table. Puis je réinsère ces enregistrements. Si quelqu'un a plus simple, please share !
Mais non, je ne suis pas Aware !
Merci encore a ceux qui m'ont aidé ! Pour les autres
Marsh Posté le 06-08-2001 à 12:24:32
Hello World !
Voila le pb. J'ai une table du personnel contenant diverses infos (table EMPLOYES). Dont une colonne pour le téléphone. Ce numéro figure dans une autre table (table TELEPHONE). J'aimerais insérer le numéro de téléphone dans la table EMPLOYES à la personne correspondante bien-sûr. Champ ID pour jointure.
Quelle serait la syntaxe SQL sachant que :
- Update : c'est pour maj avec même valeur
- Insert Into : Création de nouveaux tuples
Je pense que c'est simple mais g pô trouvé Je me remets doucement dans le SQL en fait.
Ne me laissez pas tomber !!
Merci à tous !!