IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

suprimer ligne utiliser par autre tables sqlserver 2005


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 9
    Points : 9
    Points
    9
    Par défaut suprimer ligne utiliser par autre tables sqlserver 2005
    bonjour
    je veux supprimer une ligne(1) mais le probléme que cette ligne utiliser par une autre ligne(2) d'une autre table et la ligne(2) utiliser par ligne(3) d'une autre table etc..
    j'ai utiliser ce code j'ai commencé de suprimer la ligne (4) et apres ligne(3)...
    voila code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    delete From LIGNEVENTE where ARTICLE.Code_Famille ='1' and ARTICLE.CODE_ART=LIGNEVENTE.CODE_ART
    delete  From LIGNEENTREEART where  ARTICLE.Code_Famille ='1' and ARTICLE.CODE_ART=LIGNEENTREEART.CODE_ART
    delete From ARTICLE where Code_Famille= '1'
     delete From Familles where Code_Famille ='1'
    mais ca marche pas voila les erreurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Msg*4104, Niveau*16, État*1, Ligne*1
    L'identificateur en plusieurs parties 'ARTICLE.Code_Famille' ne peut pas être lié.
    Msg*4104, Niveau*16, État*1, Ligne*1
    L'identificateur en plusieurs parties 'ARTICLE.CODE_ART' ne peut pas être lié.
    Msg*4104, Niveau*16, État*1, Ligne*2
    L'identificateur en plusieurs parties 'ARTICLE.Code_Famille' ne peut pas être lié.
    Msg*4104, Niveau*16, État*1, Ligne*2
    L'identificateur en plusieurs parties 'ARTICLE.CODE_ART' ne peut pas être lié.
    remarque Code_Famille(char)
    aidez-moi SVP

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 793
    Points
    4 793
    Par défaut
    Si j'ai bien compris, il faut supprimer tous les articles dont la famille est '1' ?
    On suppose que la clé primaire de LIGNEVENTE est [ID_Ligne] :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DELETE FROM LIGNEVENTE WHERE ID_Ligne IN 
    (SELECT ID_Ligne FROM LIGNEVENTE INNER JOIN 
    ARTICLE ON ARTICLE.CODE_ART=LIGNEVENTE.CODE_ART
    WHERE ARTICLE.Code_Famille ='1' )
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    j'ai essayé votre code sqlserver affiche cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Msg*116, Niveau*16, État*1, Ligne*1
    Une seule expression peut être spécifiée dans la liste de sélection quand la sous-requête n'est pas introduite par EXISTS.
    et apres j'ai utilisé ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    delete  From LIGNEVENTE where exists(SELECT * FROM LIGNEVENTE INNER JOIN 
    ARTICLE ON ARTICLE.CODE_ART=LIGNEVENTE.CODE_ART
    WHERE ARTICLE.Code_Famille ='1' )
    ca marche merci bcp

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Il y avait encore plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DELETE		FROM dbo.LIGNEVENTE 
    FROM		dbo.LIGNEVENTE AS LV
    INNER JOIN	dbo.ARTICLE AS A 
    			ON A.CODE_ART = LV.CODE_ART
    WHERE		A.Code_Famille ='1'
    La clause EXISTS étant optimisée pour l'utilisation de '*' (comme pour COUNT(), mais pas pour un SELECT), vous pouvez l'utiliser en tant que tel a volonté

    @++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. jointure externe FULL sur une même table [SQLServer 2005]
    Par belrifou dans le forum Langage SQL
    Réponses: 9
    Dernier message: 10/03/2010, 15h14
  2. Réponses: 4
    Dernier message: 24/11/2008, 16h04
  3. creation table avec lignes d'une autre table sous Sql Server
    Par pops4 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 25/05/2007, 13h59
  4. Réponses: 18
    Dernier message: 11/04/2007, 15h18
  5. copier une ligne dans une autre table
    Par BoeufBrocoli dans le forum SQL
    Réponses: 5
    Dernier message: 24/10/2003, 22h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo