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

Oracle Discussion :

Probleme pour effacer des lignes


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 24
    Points : 13
    Points
    13
    Par défaut Probleme pour effacer des lignes
    Bonjour,

    Voila, j'ai un petit problème que je ne parvient pas a resoudre:

    J'ai deux table, Table1 et Table2 qui possèdent des données communes.
    Je voudrais effacer les lignes de la Table2 qui sont identiques a celles de la table 1

    Pour ce faire j'ai donc essaye d'utiliser la commande "delete from table where ... "

    Mon problème est donc que je ne trouve pas comment utiliser les donnée de ma table1 pour indiquer a sql quelles lignes effacer dans ma table2.

    Pour que vous compreniez bien je pensais utiliser une clause comme celle-ci:

    " where Table1.ID = Table2.ID ; "

    Avec la commande "delete from table" je n'y parviens pas (peut etre que je fais fausse route en voulant utiliser cette commande)

    Pourriez vous m'eclairer?

    Merci d'avance!

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Points : 455
    Points
    455
    Par défaut
    essayes cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    delete from table2 t
    where t.id in (select b.id from table1 a, table2 b where a.id=b.id)

  3. #3
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Cette requête devrait faire ton affaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    delete from table2 where exists (select 1 from table1 where table1.id = table2.id);
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Merci d'avoir repondu si vite!

    Mais ces deux solutions ne conviennent pas car je n'ai pas ete assez precis dans mon explication... Desole

    En fait mes uniques ID des 2 tables sont compose de deux colonnes:

    un ID et une date et c'est la compositions de ces colonne qui cree un UNIQUE id.

    Alice, j'avais essaye ta solution, mais etant donne la nature de l'unique_id j'avais utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    where ID in ( select a.id from table1 a, table2 b where a.id = b.id) and
              date in ( select a.date from table1 a, table2 b where a.date = b.date);
    Mais cette methode me supprime trop de lignes car pour que ca marche il faudrait que l'on arrive a a avoir une clause where comme ceci (je ne sais pas si c'est possbile )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where (id, date) in (select a.id, a.date from table1 a, table2 b where a.id = b.id and a.date = b.date)
    En fait il faut absolument que Id et Date reste lie par un operateur AND dans ma clause where!

    Pour moi c un casse tête....

    plaineR, du fait que mon unique ID soit compose de deux colonnes, ta methode me supprime toute ma table, j'ai essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    delete from Table2 where exists (select a.id, a.date from table1 a, table2 b where a.id = b.id and a.date = b.date);

    Voila j'espere que quelqun pourra m'aider, en tout cas merci de vous etre penche sur mon problème

  5. #5
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Fais un petit effort :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    delete from table2 where exists (select 1 from table1 where table1.colA = table2.colA and table1.colB = table2.colB);
    Pense aux balises codes, sinon tu vas te faire réprimandé par les messieurs rouges
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  6. #6
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Desole pour les balises, c'est la premiere foi que je postais sur ce forum, je ne savais pas, je vais faire attention now!


    En tout cas merci planeR, ca marche, mais je ne vois pas tres bien la differenc entre ce que j'avais essaye et ce que tu m'as note comme code, mon erreur venait-elle du fait que dans mon from de la sous requete je notais les deux tables?

    C'est aussi la premiere foi que je vois " select 1 from ..." (je debute en sql...) Qu'est ce que ca signifie? idem a select * from?


    En tout cas un tres grand merci pour ton aide!

  7. #7
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Dans une clause exists peu importe ce que tu ramènes, l'important est que tu regardes s'il existe au moins un élément qui correspond à la sous-requête de cette clause.
    Tu peux mettre 1 ou null ou 'tartampion' cela revient au même.

    La différence avec ce que tu avais essayé c'est que ta sous-requête était toujours vérifiée (il existait toujours au moins un élément de ta table1 = à un élément de table 2), alors que celle que je t'ai proposé n'est pas toujours vérifiée (il n'existe pas toujours un élément de la table1 égal à l'élément courant de ta table2)

    Si je n'ai pas été clair, n'hésite pas à demander des précisions, c'est comme cela qu'on progresse
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  8. #8
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Si si c'est tres clair!

    Merci

    ++

Discussions similaires

  1. [Toutes versions] Macro ou code VBA pour effacer des caracteres et aller a la ligne dans un meme cellule
    Par ghisunit dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 07/04/2012, 15h29
  2. [MySQL] Probleme pour effacer une ligne d'un tableau
    Par manutchao78 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 25/06/2010, 18h00
  3. Boucler pour effacer des lignes dans une listbox à sélection multiple
    Par simond1 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 01/08/2008, 22h25
  4. Réponses: 5
    Dernier message: 07/07/2004, 16h05
  5. Réponses: 2
    Dernier message: 08/08/2003, 17h30

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