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 :

Suppression avec jointure sur FK


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Points : 37
    Points
    37
    Par défaut Suppression avec jointure sur FK
    Bonjour,

    Je viens encore vous embéter avec des jointures...

    Comme le titre l'indique je cherche à delete d'une table référentiel, certaines activités. Sauf que ces activités sont parfois utilisées

    En gros voici les deux tables :

    TACTIVT0 ou j'ai un ID_ACTI_TYP

    TTYACTV0 référentiel où jai un ID_CAT_ACTI et mon ID_ACTI_TYP

    Je cherche à supprimer de ma table TACTIVT0 où l'ID_ACTI_TYP est égal à l'id_acti_typ de TTYACTV0 pour laquelle ID_CAT_ACTI de TTYACTV0 = 8

    je bug un peu ...

    merci d'avance pour m'orienter, m'aider même avec du pseudo code ^^'

    pour l'instant j'essaye de faire :

    DELETE first, second FROM TACTIVT0 AS first INNER JOIN TTYACTV0 AS second WHERE

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour faites autant de delete qu'il y a de tables.

    Et commencez par supprimer les lignes des tables filles

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Points : 37
    Points
    37
    Par défaut
    Je tente de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DELETE FROM TACTIVT0 INNER JOIN TTYACTV0 
    WHERE TACTIVT0.ID_ACTI_TYP = TTYACTV0.ID_ACTI_TYP = TTYACTV0.ID_ACTI_TYP 
    AND TTYACTVT0.ID_CAT_ACTI = 8
    J'ai une erreur
    syntaxe incorrecte vers le mot clé inner

    Je ne pense pas pouvoir d'abord supprimer les valeurs dans la table fille sans join avec la table de référence ...

    je suis un peu perdu

    Fonctionnellement j'ai une table ou je gère des activités
    et une table référentiel

    mon but est de supprimer toutes les activités qui correspondent aux activités terminées de ma table référentiel via les données mentionnées dans mon poste précédent... mais je galère avec les delete et inner join .... :S

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Points : 37
    Points
    37
    Par défaut
    Je pars sur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DELETE FROM TACTIVT0 WHERE ID_ACTI_TYP IN 
     
    (SELECT TACTIVT0.ID_ACTI_TYP 
    FROM TACTIVT0 
    INNER JOIN TTYACTV0 
    ON TTYACTV0 ON TTYACTV0.ID_ACTI_TYP = TACTIVT0.ID_ACTI_TYP 
    WHERE TTYACTV0.ID_CAT_ACTI = 8)
    bon j'ai un autre conflit dans une autre table mais je devrais m'en sortir

    S'il me dit que j'ai de nouveau une FK sur une 3eme table sur un nouveau champ (ID_ACTI) comment faire par rapport à ce que j'ai déjà pour pouvoir
    faire la suppression TACTIVT0.ID_ACTI = TEVNTIB0.ID_ACTI

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    essayez ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DELETE FROM TACTIVT0 TAC 
    WHERE exists (select null from TTYACTV0 tty 
    where TAC.ID_ACTI_TYP = TTY.ID_ACTI_TYP AND TTY.ID_CAT_ACTI = 8)

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Points : 37
    Points
    37
    Par défaut
    C'est effectivement ce que j'ai plus ou moins fait au dessus merci

    là je me retrouve avec une nouvelle FK sur une autre table donc un nouveau inner join à faire

    entre TACTIVT0 et TEVNTIB0

    désolé je ne suis pas très à l'aise en SQL, comme vous l'aurez remarqué. Mais on est tous là sur le forum, pour apprendre

    merci pour ton aide.

Discussions similaires

  1. [MySQL] requête avec jointure sur la même table
    Par gwena54 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 08/05/2007, 11h22
  2. [ODBC] Pb de requète avec jointure sur 2 bases
    Par Invité dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/12/2006, 16h46
  3. Réponses: 3
    Dernier message: 08/11/2006, 23h04
  4. Update dans SYBASE avec jointure sur 2 colonnes
    Par metheorn dans le forum Sybase
    Réponses: 2
    Dernier message: 24/06/2005, 16h51
  5. [FB1.5]Vue avec jointure sur tables ?
    Par Sitting Bull dans le forum SQL
    Réponses: 2
    Dernier message: 07/12/2004, 17h07

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