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

Langage SQL Discussion :

[Debutant] Suppression avec jointures


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7
    Par défaut [Debutant] Suppression avec jointures
    Bonjour tout frais débutant en SQL ,
    je soumet une "requete"

    Table "Company" en lien avec table "Comm_Link"
    Table "Communication" en lien avec table "Comm_Link")
    je veux supprimer des enregistrements de la table "Comm_Link" en conditionnant une valeur dans la Table "Company" à savoir champ "Statut"='Inactif' ?

    Quand je génére la requete suivante dans Microsoft SQL Server Management studio express :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT * from Company
    SELECT * from Communication
    SELECT * from Comm_Link
    DELETE from Comm_Link WHERE Company.Comp_CompanyId = Comm_Link.CmLi_Comm_CompanyId
    AND Communication.Comm_CommunicationId=Comm_Link.CmLi_Comm_CommunicationId
    AND Company.Comp_Status='Inactif'
    J'ai me message d'erreur suivant à l'éxécution de la requete :
    Msg*4104, Niveau*16, État*1, Ligne*4
    L'identificateur en plusieurs parties 'Company.Comp_CompanyId' ne peut pas être lié.
    Msg*4104, Niveau*16, État*1, Ligne*4
    L'identificateur en plusieurs parties 'Communication.Comm_CommunicationId' ne peut pas être lié.
    Msg*4104, Niveau*16, État*1, Ligne*4
    L'identificateur en plusieurs parties 'Company.Comp_Status' ne peut pas être lié.

    Could you help me ?
    Merci d'avance
    Philippe

  2. #2
    Membre chevronné Avatar de elbj
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Services à domicile

    Informations forums :
    Inscription : Novembre 2004
    Messages : 371
    Par défaut
    Bonjour

    Tu ne peux mentionner qu'une table dans le FROM d'un DELETE. Néanmoins, dans le WHERE tu peux spécifier des conditions.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DELETE FROM Comm_Link 
    WHERE Comm_Link.CmLi_Comm_CompanyId IN ( 
      SELECT Company.Comp_CompanyId FROM Company 
      WHERE Company.Comp_Status = 'Inactif')
    Cordialement

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7
    Par défaut merci - je teste
    Merci christophe - je teste et vais commander des bouquins SQL

    CORDIALEMENT

    Philippe

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    As-tu déjà lu ça avant de te plonger dans des bouquins plus complexes :
    Cours SQL
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7
    Par défaut Cours SQL mais besoin d'aide quand même
    Hello,
    1) Merci à christophe pour la syntaxe , ça a fonctionné.
    Merci égalemnt pour les cours SQL du Modérateur je m'y plonge mais... besoin de conseil quand même :

    2) Aprés avoir supprimé des enregistrement dans ma table "Communication" (Cf 1) , je me retrouve avec un table de lien "Comm_Link" qui possède des enregistrement faisant référence àdes enregistrements de la table "Communication" qui n'existent plus et voudrait les supprimer et là je sens bien que je teste du qui n'existe plus...
    J'ai essayé ça mais ça ne fct pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT * FROM Comm_Link ,Communication
    DELETE FROM Comm_Link
        WHERE Comm_Link.CmLi_Comm_CommunicationId IN 
    (SELECT CommunicationComm_CommunicationId FROM Communication 
         WHERE NOT EXISTS Communication.Comm_CommunicationId )
    Merci d'avance pour vos précieux conseils
    Philippe

  6. #6
    Membre chevronné Avatar de elbj
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Services à domicile

    Informations forums :
    Inscription : Novembre 2004
    Messages : 371
    Par défaut
    Bonsoir

    Un problème d'intégrité référentielle ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DELETE FROM Comm_Link
    WHERE Comm_Link.CmLi_Comm_CommunicationId NOT IN
    (SELECT CommunicationComm_CommunicationId FROM Communication)
    Utilises tu des clefs étrangères avec des clauses On UPDATE et ON DELETE ?

    Cordialement

Discussions similaires

  1. Suppression avec jointure sur FK
    Par Nikimizi dans le forum Langage SQL
    Réponses: 5
    Dernier message: 05/07/2013, 12h13
  2. requête de suppression avec jointure
    Par zskiredj dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 10/01/2011, 15h21
  3. Réponses: 1
    Dernier message: 23/08/2006, 20h11
  4. [DEBUTANT]requete de jointure avec identifiant quand ds une table
    Par tripper.dim dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/05/2006, 13h46
  5. [Debutant]Suppression dans des tables avec contraintes
    Par Roming22 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 26/10/2004, 17h23

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