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

SQL Oracle Discussion :

delete sur 3 tables en même temps


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 63
    Points : 44
    Points
    44
    Par défaut delete sur 3 tables en même temps
    Bonjour,

    Je cherche à effacer sur oracle 9i les lgnes sur 3 tables en même temps, j'arrive à sélectionner les infos que je souhaite effacées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select p.piece,p.codenf,p.codfam,dp.ndossier,dp.npiece,di.dossier,di.tdossier,di.codenf,di.codfam  from piece p, dos_piec dp, dossier_ind di where p.piece = dp.npiece and p.codfam = di.codfam and p.codfam=002234 and dp.ndossier=45;
    Résultat obtenu


    PIECE CODENF CODFAM NDOSSIER NPIECE DOSSIER TDOSSIER CODENF CODFAM

    1 vide 002234 45 1 45 3 vide 002234
    4 vide 002234 45 4 45 3 vide 002234



    quand je remplace par delete il dit expression terminée non correctement.

    Je lance cette requete de suppression à partir d'un script PHP.

    A partir d'une procédure stockée il n'y aura pas moyen de faire cette suppression?

  2. #2
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    Décembre 2006
    Messages
    2 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 566
    Points : 4 780
    Points
    4 780
    Par défaut non tu n'es pas abandonné
    Bon
    • la première réaction : impossible
    • la deuxième tentation (mauvaise) passer par une vue basée sur ton select. hélas delete ne peut se faire que sur la table principale
    http://download.oracle.com/docs/cd/B...s.htm#i1007900
    • enfin peut être une piste avec Tables collections mais là je n'y connais strictement rien !
    http://download.oracle.com/docs/cd/B...2.htm#i2071637
    Est-ce que ça inspire quelqu'un ????

    ci dessous un extrait sur les vices et vertus des vues.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    DELETE Statements 
     
    You can delete from a join view provided there is one and only one 
    key-preserved table in the join. 
    The key-preserved table can be repeated in the FROM clause.
    The following DELETE statement works on the emp_dept view:
     
    DELETE FROM emp_dept     WHERE ename = 'SMITH';
    This DELETE statement on the emp_dept view is legal 
    because it can be translated to a DELETE operation on the base emp table, 
    and because the emp table is the only key-preserved table in the join.
     
    In the following view, a DELETE operation is permitted, 
    because although there are two key-preserved tables, 
    they are the same table. 
    That is, the key-preserved table is repeated. 
    In this case, the delete statement operates on the first table in the FROM list (e1, in this example):
    CREATE VIEW emp_emp AS     SELECT e1.ename, e2.empno, e2.deptno 
    FROM emp e1, emp e2     WHERE e1.empno = e2.empno;
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

  3. #3
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    Salut,

    Au vu de ton Select, je suppose que tu as des relations entre ces tables...

    Du coup, si les clef étrangères qui lient ces tables sont déclarées en "on delete cascade", il suffit de faire le delete depuis la table parent pour que les lignes correspondantes soient également effacées des tables enfants...

    Mais ça implique que ce soit le copmportement recherché dans tous les cas, et pas juste une fois ... sinon il faut d'abord effacer les données enfants avant de pouvoir effacer les données parents.
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

Discussions similaires

  1. Requête sur 3 tables en même temps
    Par yule dans le forum Requêtes
    Réponses: 0
    Dernier message: 10/11/2013, 10h14
  2. Requête sur 2 tables en même temps
    Par DelphiCool dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/10/2008, 21h18
  3. Recherche sur plusieurs tables en même temps
    Par Zouzou1er dans le forum VBA Access
    Réponses: 5
    Dernier message: 09/10/2007, 09h40
  4. Requête sur deux tables en même temps
    Par will89 dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/04/2006, 11h01
  5. Comptez sur deux tables en même temps
    Par genova dans le forum Langage SQL
    Réponses: 12
    Dernier message: 13/09/2004, 18h58

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