J'ai quelques difficultés pour construire une requête T-SQL, qui sera
triviale pour vous je pense :
3 Tables :
- COMPANY : COMPANY_ID, COMPANY_NAME
- DEPARTMENT : DEPARTMENT_ID, COMPANY_ID, DEPARTMENT_NAME
- EMPLOYEE : EMPLOYEE_ID, DEPARTMENT_ID, EMPLOYEE_NAME
Une COMPANY a plusieurs DEPARTMENT, qui peuvent avoir plusieurs EMPLOYEE.
Simple non ?
Lorsque je supprime une COMPANY, je veux que ca supprime tous les DEPARTMENT
liés, ainsi que l'ensemble des EMPLOYEE liés aux DEPARTMENT. No problem,
pour supprimer la COMPANY et les DEPARTMENT liés, mais pour les EMPLOYEE,
j'ai un peu de mal. J'aimerai faire ca :
DELETE FROM EMPLOYEE
WHERE DEPARTMENT_ID = (SELECT DEPARTMENT_ID WHERE WHERE COMPANY_ID =
@COMPANY_ID)
DELETE FROM DEPARTMENT
WHERE COMPANY_ID = @COMPANY_ID
DELETE FROM COMPANY
WHERE COMPANY_ID = @COMPANY_ID
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Xavier Pillons
Julien,
Pourquoi ne pas utiliser les contraintes intégrées, elles permettent typiquement de gérer cela automatiquement.
-- Xavier Pillons Microsoft Services
"Julien Cheyssial" wrote in message news:u1%23oY0J$
Bonjour à tous,
J'ai quelques difficultés pour construire une requête T-SQL, qui sera triviale pour vous je pense :
3 Tables : - COMPANY : COMPANY_ID, COMPANY_NAME - DEPARTMENT : DEPARTMENT_ID, COMPANY_ID, DEPARTMENT_NAME - EMPLOYEE : EMPLOYEE_ID, DEPARTMENT_ID, EMPLOYEE_NAME
Une COMPANY a plusieurs DEPARTMENT, qui peuvent avoir plusieurs EMPLOYEE. Simple non ? Lorsque je supprime une COMPANY, je veux que ca supprime tous les
DEPARTMENT
liés, ainsi que l'ensemble des EMPLOYEE liés aux DEPARTMENT. No problem, pour supprimer la COMPANY et les DEPARTMENT liés, mais pour les EMPLOYEE, j'ai un peu de mal. J'aimerai faire ca :
DELETE FROM EMPLOYEE WHERE DEPARTMENT_ID = (SELECT DEPARTMENT_ID WHERE WHERE COMPANY_ID > @COMPANY_ID)
DELETE FROM DEPARTMENT WHERE COMPANY_ID = @COMPANY_ID
DELETE FROM COMPANY WHERE COMPANY_ID = @COMPANY_ID
Qu'est-ce qui cloche ?
Thanks
Julien C.
Julien,
Pourquoi ne pas utiliser les contraintes intégrées, elles permettent
typiquement de gérer cela automatiquement.
--
Xavier Pillons
Microsoft Services
"Julien Cheyssial" <cheyss_j@hotmail.com> wrote in message
news:u1%23oY0J$DHA.2800@tk2msftngp13.phx.gbl...
Bonjour à tous,
J'ai quelques difficultés pour construire une requête T-SQL, qui sera
triviale pour vous je pense :
3 Tables :
- COMPANY : COMPANY_ID, COMPANY_NAME
- DEPARTMENT : DEPARTMENT_ID, COMPANY_ID, DEPARTMENT_NAME
- EMPLOYEE : EMPLOYEE_ID, DEPARTMENT_ID, EMPLOYEE_NAME
Une COMPANY a plusieurs DEPARTMENT, qui peuvent avoir plusieurs EMPLOYEE.
Simple non ?
Lorsque je supprime une COMPANY, je veux que ca supprime tous les
DEPARTMENT
liés, ainsi que l'ensemble des EMPLOYEE liés aux DEPARTMENT. No problem,
pour supprimer la COMPANY et les DEPARTMENT liés, mais pour les EMPLOYEE,
j'ai un peu de mal. J'aimerai faire ca :
DELETE FROM EMPLOYEE
WHERE DEPARTMENT_ID = (SELECT DEPARTMENT_ID WHERE WHERE COMPANY_ID > @COMPANY_ID)
DELETE FROM DEPARTMENT
WHERE COMPANY_ID = @COMPANY_ID
DELETE FROM COMPANY
WHERE COMPANY_ID = @COMPANY_ID
Pourquoi ne pas utiliser les contraintes intégrées, elles permettent typiquement de gérer cela automatiquement.
-- Xavier Pillons Microsoft Services
"Julien Cheyssial" wrote in message news:u1%23oY0J$
Bonjour à tous,
J'ai quelques difficultés pour construire une requête T-SQL, qui sera triviale pour vous je pense :
3 Tables : - COMPANY : COMPANY_ID, COMPANY_NAME - DEPARTMENT : DEPARTMENT_ID, COMPANY_ID, DEPARTMENT_NAME - EMPLOYEE : EMPLOYEE_ID, DEPARTMENT_ID, EMPLOYEE_NAME
Une COMPANY a plusieurs DEPARTMENT, qui peuvent avoir plusieurs EMPLOYEE. Simple non ? Lorsque je supprime une COMPANY, je veux que ca supprime tous les
DEPARTMENT
liés, ainsi que l'ensemble des EMPLOYEE liés aux DEPARTMENT. No problem, pour supprimer la COMPANY et les DEPARTMENT liés, mais pour les EMPLOYEE, j'ai un peu de mal. J'aimerai faire ca :
DELETE FROM EMPLOYEE WHERE DEPARTMENT_ID = (SELECT DEPARTMENT_ID WHERE WHERE COMPANY_ID > @COMPANY_ID)
DELETE FROM DEPARTMENT WHERE COMPANY_ID = @COMPANY_ID
DELETE FROM COMPANY WHERE COMPANY_ID = @COMPANY_ID
Qu'est-ce qui cloche ?
Thanks
Julien C.
TINANT Hervé \(alias CrazyHT\)
DELETE FROM EMPLOYEE WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID WHERE WHERE COMPANY_ID @COMPANY_ID)
"Julien Cheyssial" a écrit dans le message de news:u1%23oY0J$
Bonjour à tous,
J'ai quelques difficultés pour construire une requête T-SQL, qui sera triviale pour vous je pense :
3 Tables : - COMPANY : COMPANY_ID, COMPANY_NAME - DEPARTMENT : DEPARTMENT_ID, COMPANY_ID, DEPARTMENT_NAME - EMPLOYEE : EMPLOYEE_ID, DEPARTMENT_ID, EMPLOYEE_NAME
Une COMPANY a plusieurs DEPARTMENT, qui peuvent avoir plusieurs EMPLOYEE. Simple non ? Lorsque je supprime une COMPANY, je veux que ca supprime tous les
DEPARTMENT
liés, ainsi que l'ensemble des EMPLOYEE liés aux DEPARTMENT. No problem, pour supprimer la COMPANY et les DEPARTMENT liés, mais pour les EMPLOYEE, j'ai un peu de mal. J'aimerai faire ca :
DELETE FROM EMPLOYEE WHERE DEPARTMENT_ID = (SELECT DEPARTMENT_ID WHERE WHERE COMPANY_ID > @COMPANY_ID)
DELETE FROM DEPARTMENT WHERE COMPANY_ID = @COMPANY_ID
DELETE FROM COMPANY WHERE COMPANY_ID = @COMPANY_ID
Qu'est-ce qui cloche ?
Thanks
Julien C.
DELETE FROM EMPLOYEE
WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID WHERE WHERE COMPANY_ID @COMPANY_ID)
"Julien Cheyssial" <cheyss_j@hotmail.com> a écrit dans le message de
news:u1%23oY0J$DHA.2800@tk2msftngp13.phx.gbl...
Bonjour à tous,
J'ai quelques difficultés pour construire une requête T-SQL, qui sera
triviale pour vous je pense :
3 Tables :
- COMPANY : COMPANY_ID, COMPANY_NAME
- DEPARTMENT : DEPARTMENT_ID, COMPANY_ID, DEPARTMENT_NAME
- EMPLOYEE : EMPLOYEE_ID, DEPARTMENT_ID, EMPLOYEE_NAME
Une COMPANY a plusieurs DEPARTMENT, qui peuvent avoir plusieurs EMPLOYEE.
Simple non ?
Lorsque je supprime une COMPANY, je veux que ca supprime tous les
DEPARTMENT
liés, ainsi que l'ensemble des EMPLOYEE liés aux DEPARTMENT. No problem,
pour supprimer la COMPANY et les DEPARTMENT liés, mais pour les EMPLOYEE,
j'ai un peu de mal. J'aimerai faire ca :
DELETE FROM EMPLOYEE
WHERE DEPARTMENT_ID = (SELECT DEPARTMENT_ID WHERE WHERE COMPANY_ID > @COMPANY_ID)
DELETE FROM DEPARTMENT
WHERE COMPANY_ID = @COMPANY_ID
DELETE FROM COMPANY
WHERE COMPANY_ID = @COMPANY_ID
"Julien Cheyssial" a écrit dans le message de news:u1%23oY0J$
Bonjour à tous,
J'ai quelques difficultés pour construire une requête T-SQL, qui sera triviale pour vous je pense :
3 Tables : - COMPANY : COMPANY_ID, COMPANY_NAME - DEPARTMENT : DEPARTMENT_ID, COMPANY_ID, DEPARTMENT_NAME - EMPLOYEE : EMPLOYEE_ID, DEPARTMENT_ID, EMPLOYEE_NAME
Une COMPANY a plusieurs DEPARTMENT, qui peuvent avoir plusieurs EMPLOYEE. Simple non ? Lorsque je supprime une COMPANY, je veux que ca supprime tous les
DEPARTMENT
liés, ainsi que l'ensemble des EMPLOYEE liés aux DEPARTMENT. No problem, pour supprimer la COMPANY et les DEPARTMENT liés, mais pour les EMPLOYEE, j'ai un peu de mal. J'aimerai faire ca :
DELETE FROM EMPLOYEE WHERE DEPARTMENT_ID = (SELECT DEPARTMENT_ID WHERE WHERE COMPANY_ID > @COMPANY_ID)
DELETE FROM DEPARTMENT WHERE COMPANY_ID = @COMPANY_ID
DELETE FROM COMPANY WHERE COMPANY_ID = @COMPANY_ID
Qu'est-ce qui cloche ?
Thanks
Julien C.
Fred BROUARD
Le mieux est de mettre tout cela dans une procédure stockée transactionnées comme ceci :
************************
CREATE PROCEDURE SP_DELETE_COMPANY @CPN_ID INTEGER AS
BEGIN TRANSACTION
DELETE FROM EMPLOYEE WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID FROM DEPARTMENT WHERE COMPANY_ID = @CPN_ID) IF @@ERROR <> 0 GOTO LBL_ERROR
DELETE FROM DEPARTMENT WHERE COMPANY_ID = @CPN_ID IF @@ERROR <> 0 GOTO LBL_ERROR
DELETE FROM COMPANY WHERE COMPANY_ID = @CPN_ID IF @@ERROR <> 0 GOTO LBL_ERROR
COMMIT TRANSACTION RETURN
LBL_ERROR:
ROLLBACK TRANSACTION
************************
Pour appeller la procédure :
SP_DELETE_COMPANY 23
C'est tout !
A +
Julien Cheyssial a écrit:
Bonjour à tous,
J'ai quelques difficultés pour construire une requête T-SQL, qui sera triviale pour vous je pense :
3 Tables : - COMPANY : COMPANY_ID, COMPANY_NAME - DEPARTMENT : DEPARTMENT_ID, COMPANY_ID, DEPARTMENT_NAME - EMPLOYEE : EMPLOYEE_ID, DEPARTMENT_ID, EMPLOYEE_NAME
Une COMPANY a plusieurs DEPARTMENT, qui peuvent avoir plusieurs EMPLOYEE. Simple non ? Lorsque je supprime une COMPANY, je veux que ca supprime tous les DEPARTMENT liés, ainsi que l'ensemble des EMPLOYEE liés aux DEPARTMENT. No problem, pour supprimer la COMPANY et les DEPARTMENT liés, mais pour les EMPLOYEE, j'ai un peu de mal. J'aimerai faire ca :
DELETE FROM EMPLOYEE WHERE DEPARTMENT_ID = (SELECT DEPARTMENT_ID WHERE WHERE COMPANY_ID > @COMPANY_ID)
DELETE FROM DEPARTMENT WHERE COMPANY_ID = @COMPANY_ID
DELETE FROM COMPANY WHERE COMPANY_ID = @COMPANY_ID
Qu'est-ce qui cloche ?
Thanks
Julien C.
-- Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************
Le mieux est de mettre tout cela dans une procédure stockée
transactionnées comme ceci :
************************
CREATE PROCEDURE SP_DELETE_COMPANY
@CPN_ID INTEGER
AS
BEGIN TRANSACTION
DELETE FROM EMPLOYEE
WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID
FROM DEPARTMENT
WHERE COMPANY_ID = @CPN_ID)
IF @@ERROR <> 0
GOTO LBL_ERROR
DELETE FROM DEPARTMENT
WHERE COMPANY_ID = @CPN_ID
IF @@ERROR <> 0
GOTO LBL_ERROR
DELETE FROM COMPANY
WHERE COMPANY_ID = @CPN_ID
IF @@ERROR <> 0
GOTO LBL_ERROR
COMMIT TRANSACTION
RETURN
LBL_ERROR:
ROLLBACK TRANSACTION
************************
Pour appeller la procédure :
SP_DELETE_COMPANY 23
C'est tout !
A +
Julien Cheyssial a écrit:
Bonjour à tous,
J'ai quelques difficultés pour construire une requête T-SQL, qui sera
triviale pour vous je pense :
3 Tables :
- COMPANY : COMPANY_ID, COMPANY_NAME
- DEPARTMENT : DEPARTMENT_ID, COMPANY_ID, DEPARTMENT_NAME
- EMPLOYEE : EMPLOYEE_ID, DEPARTMENT_ID, EMPLOYEE_NAME
Une COMPANY a plusieurs DEPARTMENT, qui peuvent avoir plusieurs EMPLOYEE.
Simple non ?
Lorsque je supprime une COMPANY, je veux que ca supprime tous les DEPARTMENT
liés, ainsi que l'ensemble des EMPLOYEE liés aux DEPARTMENT. No problem,
pour supprimer la COMPANY et les DEPARTMENT liés, mais pour les EMPLOYEE,
j'ai un peu de mal. J'aimerai faire ca :
DELETE FROM EMPLOYEE
WHERE DEPARTMENT_ID = (SELECT DEPARTMENT_ID WHERE WHERE COMPANY_ID > @COMPANY_ID)
DELETE FROM DEPARTMENT
WHERE COMPANY_ID = @COMPANY_ID
DELETE FROM COMPANY
WHERE COMPANY_ID = @COMPANY_ID
Qu'est-ce qui cloche ?
Thanks
Julien C.
--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto:brouardf@club-internet.fr ******************
Le mieux est de mettre tout cela dans une procédure stockée transactionnées comme ceci :
************************
CREATE PROCEDURE SP_DELETE_COMPANY @CPN_ID INTEGER AS
BEGIN TRANSACTION
DELETE FROM EMPLOYEE WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID FROM DEPARTMENT WHERE COMPANY_ID = @CPN_ID) IF @@ERROR <> 0 GOTO LBL_ERROR
DELETE FROM DEPARTMENT WHERE COMPANY_ID = @CPN_ID IF @@ERROR <> 0 GOTO LBL_ERROR
DELETE FROM COMPANY WHERE COMPANY_ID = @CPN_ID IF @@ERROR <> 0 GOTO LBL_ERROR
COMMIT TRANSACTION RETURN
LBL_ERROR:
ROLLBACK TRANSACTION
************************
Pour appeller la procédure :
SP_DELETE_COMPANY 23
C'est tout !
A +
Julien Cheyssial a écrit:
Bonjour à tous,
J'ai quelques difficultés pour construire une requête T-SQL, qui sera triviale pour vous je pense :
3 Tables : - COMPANY : COMPANY_ID, COMPANY_NAME - DEPARTMENT : DEPARTMENT_ID, COMPANY_ID, DEPARTMENT_NAME - EMPLOYEE : EMPLOYEE_ID, DEPARTMENT_ID, EMPLOYEE_NAME
Une COMPANY a plusieurs DEPARTMENT, qui peuvent avoir plusieurs EMPLOYEE. Simple non ? Lorsque je supprime une COMPANY, je veux que ca supprime tous les DEPARTMENT liés, ainsi que l'ensemble des EMPLOYEE liés aux DEPARTMENT. No problem, pour supprimer la COMPANY et les DEPARTMENT liés, mais pour les EMPLOYEE, j'ai un peu de mal. J'aimerai faire ca :
DELETE FROM EMPLOYEE WHERE DEPARTMENT_ID = (SELECT DEPARTMENT_ID WHERE WHERE COMPANY_ID > @COMPANY_ID)
DELETE FROM DEPARTMENT WHERE COMPANY_ID = @COMPANY_ID
DELETE FROM COMPANY WHERE COMPANY_ID = @COMPANY_ID
Qu'est-ce qui cloche ?
Thanks
Julien C.
-- Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************