OVH Cloud OVH Cloud

supprimer enregistrements entre tables liées

6 réponses
Avatar
Paul
Bonjour,
Je travaille sur un projet Access et j'essaie de supprimer des
enregistrements
dans des tables Sql Server.
Dans Access, je peux écrire par exemple :
DELETE Table1.*
FROM table1 INNER JOIN Table2 ON Table1.Monchamp = Table2.Monchamp
WHERE (((Table2.MonChamp2)="toto"))

Il semblerait que ça ne marche pas dans sql Server.
Quelle serait la syntaxe exacte ou comment procéder si ce genre de requête
est impossible ?
Merci de votre aide.

--
Paul

6 réponses

Avatar
Christophe
Esaye comme ça

DELETE from TT.*
FROM table1 as TT INNER JOIN Table2 ON TT.Monchamp = Table2.Monchamp
WHERE Table2.MonChamp2='toto'





"Paul" a écrit dans le message de
news:4450db56$
Bonjour,
Je travaille sur un projet Access et j'essaie de supprimer des
enregistrements
dans des tables Sql Server.
Dans Access, je peux écrire par exemple :
DELETE Table1.*
FROM table1 INNER JOIN Table2 ON Table1.Monchamp = Table2.Monchamp
WHERE (((Table2.MonChamp2)="toto"))

Il semblerait que ça ne marche pas dans sql Server.
Quelle serait la syntaxe exacte ou comment procéder si ce genre de requête
est impossible ?
Merci de votre aide.

--
Paul




Avatar
SQLpro [MVP]
Paul a écrit :
Bonjour,
Je travaille sur un projet Access et j'essaie de supprimer des
enregistrements
dans des tables Sql Server.
Dans Access, je peux écrire par exemple :


> DELETE Table1.*
> FROM table1 INNER JOIN Table2 ON Table1.Monchamp = Table2.Monchamp
> WHERE (((Table2.MonChamp2)="toto"))

Access utilise un SQL qui est très loin d'être normatif. Le langage SQL
est normalisé depuis plus de 20 ans... Or SQL Server respecte assez bien
la norme sur le sujet...
Donc beaucoup de requêtes écrites spécifiquemment pour Access par des
informaticiens qui ne maîtrisent pas le langage SQL ne peuvent
s'exécuter sur MS SQL Server...

En l'occurrence :
1) il est interdit d'utiliser un alias dans les tables cibles des ordres
INSERT, UPDATE et DELETE.
2) le délimiteur de chaine de caractère est l'apostrophe et non le
guillement.

La bonne syntaxe est donc :

DELETE Table1
FROM table1
INNER JOIN Table2 T2
ON Monchamp = T2.Monchamp
WHERE T2.MonChamp2 = 'toto'



Il semblerait que ça ne marche pas dans sql Server.
Quelle serait la syntaxe exacte ou comment procéder si ce genre de requête
est impossible ?
Merci de votre aide.




Pour maitriser le langage SQL, mon site http://sqlpro.developpez.com,
comme mes bouquins peuvent vous y aider !

A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
Paul
Merci beaucoup, Christophe, ça marche !
(mais il faut mettre DELETE FROM TT au lieu de DELETE FROM TT.*)

--
Paul

"Christophe" a écrit
Essaye comme ça

DELETE from TT.*
FROM table1 as TT INNER JOIN Table2 ON TT.Monchamp = Table2.Monchamp
WHERE Table2.MonChamp2='toto'





"Paul" a écrit dans le message de
news:4450db56$
> Bonjour,
> Je travaille sur un projet Access et j'essaie de supprimer des
> enregistrements
> dans des tables Sql Server.
> Dans Access, je peux écrire par exemple :
> DELETE Table1.*
> FROM table1 INNER JOIN Table2 ON Table1.Monchamp = Table2.Monchamp
> WHERE (((Table2.MonChamp2)="toto"))
>
> Il semblerait que ça ne marche pas dans sql Server.
> Quelle serait la syntaxe exacte ou comment procéder si ce genre de


requête
> est impossible ?
> Merci de votre aide.
>
> --
> Paul


Avatar
Christophe
Tiens c'est drole j'aurais juré que les alias ete le principe à utiliser
justement !
comme quoi !
;)



"SQLpro [MVP]" a écrit dans le message de
news:O7B1%
Paul a écrit :
> Bonjour,
> Je travaille sur un projet Access et j'essaie de supprimer des
> enregistrements
> dans des tables Sql Server.
> Dans Access, je peux écrire par exemple :
> DELETE Table1.*
> FROM table1 INNER JOIN Table2 ON Table1.Monchamp = Table2.Monchamp
> WHERE (((Table2.MonChamp2)="toto"))

Access utilise un SQL qui est très loin d'être normatif. Le langage SQL
est normalisé depuis plus de 20 ans... Or SQL Server respecte assez bien
la norme sur le sujet...
Donc beaucoup de requêtes écrites spécifiquemment pour Access par des
informaticiens qui ne maîtrisent pas le langage SQL ne peuvent
s'exécuter sur MS SQL Server...

En l'occurrence :
1) il est interdit d'utiliser un alias dans les tables cibles des ordres
INSERT, UPDATE et DELETE.
2) le délimiteur de chaine de caractère est l'apostrophe et non le
guillement.

La bonne syntaxe est donc :

DELETE Table1
FROM table1
INNER JOIN Table2 T2
ON Monchamp = T2.Monchamp
WHERE T2.MonChamp2 = 'toto'


>
> Il semblerait que ça ne marche pas dans sql Server.
> Quelle serait la syntaxe exacte ou comment procéder si ce genre de


requête
> est impossible ?
> Merci de votre aide.
>

Pour maitriser le langage SQL, mon site http://sqlpro.developpez.com,
comme mes bouquins peuvent vous y aider !

A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************


Avatar
Christophe
Oui excuse j'ai pas bien relus mon script
Sorry


"Paul" a écrit dans le message de
news:4451d240$
Merci beaucoup, Christophe, ça marche !
(mais il faut mettre DELETE FROM TT au lieu de DELETE FROM TT.*)

--
Paul

"Christophe" a écrit
> Essaye comme ça
>
> DELETE from TT.*
> FROM table1 as TT INNER JOIN Table2 ON TT.Monchamp = Table2.Monchamp
> WHERE Table2.MonChamp2='toto'
>
>
>
>
>
> "Paul" a écrit dans le message de
> news:4450db56$
> > Bonjour,
> > Je travaille sur un projet Access et j'essaie de supprimer des
> > enregistrements
> > dans des tables Sql Server.
> > Dans Access, je peux écrire par exemple :
> > DELETE Table1.*
> > FROM table1 INNER JOIN Table2 ON Table1.Monchamp = Table2.Monchamp
> > WHERE (((Table2.MonChamp2)="toto"))
> >
> > Il semblerait que ça ne marche pas dans sql Server.
> > Quelle serait la syntaxe exacte ou comment procéder si ce genre de
requête
> > est impossible ?
> > Merci de votre aide.
> >
> > --
> > Paul




Avatar
SQLpro [MVP]
Christophe a écrit :
Tiens c'est drole j'aurais juré que les alias ete le principe à utiliser
justement !
comme quoi !



JAMAIS dans les ordres INSERT UPDATE ou DELETE pour la table cible.

A +

;)



"SQLpro [MVP]" a écrit dans le message de
news:O7B1%
Paul a écrit :
Bonjour,
Je travaille sur un projet Access et j'essaie de supprimer des
enregistrements
dans des tables Sql Server.
Dans Access, je peux écrire par exemple :


> DELETE Table1.*
> FROM table1 INNER JOIN Table2 ON Table1.Monchamp = Table2.Monchamp
> WHERE (((Table2.MonChamp2)="toto"))

Access utilise un SQL qui est très loin d'être normatif. Le langage SQL
est normalisé depuis plus de 20 ans... Or SQL Server respecte assez bien
la norme sur le sujet...
Donc beaucoup de requêtes écrites spécifiquemment pour Access par des
informaticiens qui ne maîtrisent pas le langage SQL ne peuvent
s'exécuter sur MS SQL Server...

En l'occurrence :
1) il est interdit d'utiliser un alias dans les tables cibles des ordres
INSERT, UPDATE et DELETE.
2) le délimiteur de chaine de caractère est l'apostrophe et non le
guillement.

La bonne syntaxe est donc :

DELETE Table1
FROM table1
INNER JOIN Table2 T2
ON Monchamp = T2.Monchamp
WHERE T2.MonChamp2 = 'toto'


Il semblerait que ça ne marche pas dans sql Server.
Quelle serait la syntaxe exacte ou comment procéder si ce genre de




requête
est impossible ?
Merci de votre aide.



Pour maitriser le langage SQL, mon site http://sqlpro.developpez.com,
comme mes bouquins peuvent vous y aider !

A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************








--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************