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 :

select count(*) et DELETE


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 122
    Par défaut select count(*) et DELETE
    Bonjour,

    J'ai deux tables, une parent et l'autre enfant.
    La parent a deux champs, période et organisme.

    Je voudrais faire un select count(*) de mon parent selon des valeurs spécifiques pour les champs. Ça me prends aussi la clé de ceux-ci car dans l'enfant il n'y a pas les deux champs du parent mais juste la clé qui a le lien.

    Ensuite faire un delete de l'enfant selon le résultat du parent

    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
     
    BEGIN
     
       SELECT C.CLE_REGISTRE, COUNT(*) FROM TABLEC C
       WHERE C.PERIODE = 's'
       AND   C.ORGANISM = 'W';
     
     
       LOOP 
          DELETE FROM TABLEA A, TABLEB B, TABLEC C
          WHERE A.CLE_REGISTRE = C.CLE_REGISTRE
          AND B.CLE_REGISTRE = C.CLE_REGISTRE
          AND ROWNUM <= 1000;
       EXIT WHEN SQL%ROWCOUNT = 0;
       END LOOP;
    END;
    Pouriez-vous me dire si je suis dans la bonne voie???

    merci!

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 955
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 955
    Par défaut
    Salut,

    Alors il te reste encore un peu de boulot
    Citation Envoyé par Marcel Chabot Voir le message
    J'ai deux tables, une parent et l'autre enfant.
    ...
    DELETE FROM TABLEA A, TABLEB B, TABLEC C
    1) Je pense qu'il faut que tu précises un peu...

    2) Syntaxiquement c'est pas ça du tout :
    • SELECT C.CLE_REGISTRE, COUNT(*) => GROUP BY C.CLE_REGISTRE

    • Tu ne peux pas faire un select tel quel dans une procédure PL/SQL. => utilisation d'un curseur ou d'une collection (cf tuto)

    • DELETE FROM TABLEA A, TABLEB B, TABLEC C ne fonctionne pas => il faut choisir la table dans laquelle tu DELETE.


    3) Si tu utilises ROWNUM, il te faut une clause ORDER BY (dans une sous requête) afin de garantir l'ordre de restitution.

    4) N'oublies pas de commit les modifications.

    Par contre as tu vraiment besoin de travailler dans une procédure ou du SQL pur peut il convenir ?
    Si tu nous expliques un peu mieux ton contexte, nous pourrons plus facilement te conseiller.

Discussions similaires

  1. [Java][debutant]select count(*) ne retourne rien !!
    Par Invité dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/01/2007, 11h39
  2. [Oracle] select count(..) et Oracle 10G
    Par onclebob dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/09/2005, 15h04
  3. mon select count(*) marche pas
    Par zorba49 dans le forum Langage SQL
    Réponses: 14
    Dernier message: 05/08/2005, 08h28
  4. [Performance] RecordCount ou select Count(champ) ?
    Par shwin dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 28/09/2004, 17h37
  5. résultat de " select count "
    Par marie253 dans le forum Bases de données
    Réponses: 3
    Dernier message: 17/06/2004, 12h07

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