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 :

MAJ d'une table mère quand il n'y a plus d'enregistrements Fils


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 525
    Par défaut MAJ d'une table mère quand il n'y a plus d'enregistrements Fils


    Je dispose de deux tables batch et consigne. La premiere référence la deuxieme grace à un champ id_consigne. En gros mes tables sont comme suit :
    batch : id, session, uj, id_consigne.
    consigne : id, trigramme, contenu.

    Plusieurs enregistrements batch peuvent pointer vers un même enregistrement consigne, c-a-d que je peux avoir :

    batch1 -> consigne1
    batch5 - > consigne1

    Je désire supprimer des batchs, mais supprimer un batch ne veut pas dire supprimer la consigne correspondante donc je peux supprimer batch1 et j'aurai toujours batch5 qui pointe vers consigne1.
    Mon problème maintenant c'est lorsque je n'est plus aucun batch qui ponte vers un enregistrement consigne, je dois updater le champ contenu de consigne et le mettre à MANQUE.

    Donc avec batch1->consigne1 et batch5->consigne1. Apres la suppression de batch1 et de batch5, aucun enregistrement batch ne pointe vers consigne1 donc mettre le contenu de consigne1 à MANQUE.
    Je ne sais pas comment faire.
    J'ai essayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Update consigne.contenu where not exists (select * from consigne, batch where batch.id_consigne = consigne.id);
    Mais ça ne marche pas.
    Quelqu'un aura une idée de ce que je peux faire comme requete pour updater le champ contenu à MANQUE.


  2. #2
    Membre émérite
    Avatar de marabout
    Homme Profil pro
    Consultant E-Learning
    Inscrit en
    Août 2006
    Messages
    650
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant E-Learning

    Informations forums :
    Inscription : Août 2006
    Messages : 650
    Par défaut
    A mon avis, c'est plutôt DELETE que tu dois utiliser plutôt que UPDATE En tout cas ton UPDATE n'est pas correct... Il manque des arguments:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE qqch=x FROM Table Where condition

  3. #3
    Membre chevronné
    Inscrit en
    Avril 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 316
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Update matable set champ1=..., champ2 =... 
    Where condition
    A+

  4. #4
    Membre émérite
    Avatar de marabout
    Homme Profil pro
    Consultant E-Learning
    Inscrit en
    Août 2006
    Messages
    650
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant E-Learning

    Informations forums :
    Inscription : Août 2006
    Messages : 650
    Par défaut
    Sorry, tu as tout à fait raison Soltani1... Où étais-je ?

  5. #5
    Xo
    Xo est déconnecté
    Membre Expert
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Par défaut
    Bonjour,

    Merci de respecter les CONSEILS... à lire AVANT de POSTER


    En l'occurence, la syntaxe de votre update est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE consigne
       SET contenu = 'MANQUE'
     WHERE NOT EXISTS (select * from batch where batch.id_consigne = consigne.id);
    Vous n'avez pas besoin de faire appel à la table consigne dans la sous-requête, la jointure se fera avec la table mise à jour
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL2k5SP1] Maj d'une table par importation
    Par Peck777 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 10/09/2006, 11h39
  2. [8i] MAJ d'une table via un fichier texte
    Par ApprentiOracle dans le forum SQL
    Réponses: 3
    Dernier message: 01/08/2006, 16h08
  3. Maj d'une table à partir d'une autre
    Par gleferrec dans le forum Oracle
    Réponses: 1
    Dernier message: 24/01/2006, 11h10
  4. Erreur de maj d'une table !
    Par smail21 dans le forum Bases de données
    Réponses: 6
    Dernier message: 30/08/2005, 15h18
  5. MAJ d'une table sous SQL Server par insertion
    Par keish dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/06/2003, 16h23

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