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 :

problème update avec sous requetes


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 35
    Points : 25
    Points
    25
    Par défaut problème update avec sous requetes
    Bonjour,

    j'ai un problème pour construire ma requete d'update sous Oracle 9i.

    Voici mon schéma :
    TableA : id_A, date_A
    TableB : id_A, id_C
    TableC : id_C, date_C

    Ce que je voudrais faire, c'est faire un update de la tableA pour écraser la date_A en mettant la date_C à la place. Ca me paraitrait plus simple s'il n'y avait pas cette tableB entre les deux, qui fait le lien entre les deux tables.

    Si quelqu'un a une idée, je suis preneur. J'ai testé quelques trucs, mais rien n'a fonctionné.

    Merci d'avance

    Stoz

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 67
    Points : 55
    Points
    55
    Par défaut
    Bonjour,
    essaye ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Update TableA set dateA=(select  c.dateC from TableC c, TableB b where b.idA='ton id' and b.idC=c.idC)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 35
    Points : 25
    Points
    25
    Par défaut
    merci bob pour ta réponse, mais je crains que ce ne soit pas ça.

    En fait, je voudrais faire un update de toutes les lignes de la table Table_A. Et pas seulement sur un id.

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Comment ça doit se passer si un enregistrement de la table A est liés à plusieurs enregistrements de la table C ? C'est le dernier qui passe qui gagne ?
    "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

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 35
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par Xo
    Comment ça doit se passer si un enregistrement de la table A est liés à plusieurs enregistrements de la table C ? C'est le dernier qui passe qui gagne ?
    En fait, c'est impossible.

    Ce qui est possible en revanche, c'est l'inverse. C'est à dire qu'une ligne de la table_C peut être liée à plusieurs enregistrements de la table_A, mais ça, ce n'est pas grave.

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Donc en gros, la solution proposée par bob33 correspond à ce que tu veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE TableA A
       SET DateA = (select DateC
                      from TableC C, TableB B
                     where B.id_A = A.id_A
                       and B.id_C = C.id_C);
    En rajoutant un alias A sur TableA et en modifant la jointure A-B

    [Edit] Mes jointures ne sont pas normalisées, désolé, je suis sous Oracle 8i [/Edit]
    "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

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 35
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par Xo
    Donc en gros, la solution proposée par bob33 correspond à ce que tu veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE TableA A
       SET DateA = (select DateC
                      from TableC C, TableB B
                     where B.id_A = A.id_A
                       and B.id_C = C.id_C);
    En rajoutant un alias A sur TableA et en modifant la jointure A-B

    [Edit] Mes jointures ne sont pas normalisées, désolé, je suis sous Oracle 8i [/Edit]
    Oui, c'est ça ! Ca marche impec. Je ne pensais pas pouvoir faire appel à ma table A dans ma sous-requete (un peu beaucoup débutant le gars).

    Merci à tous les deux en tout cas.

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

Discussions similaires

  1. Pb update avec sous requete
    Par cdsoft dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 04/07/2008, 23h26
  2. update avec sous requete
    Par oracleur dans le forum SQL
    Réponses: 2
    Dernier message: 05/03/2008, 17h59
  3. MySQL: Probleme d'UPDATE avec sous requete SELECT
    Par simonius dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/11/2007, 14h57
  4. Requete Update avec sous requete et jointure
    Par javaboy dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/05/2007, 11h03
  5. Requete Update avec sous requete
    Par joziel dans le forum Langage SQL
    Réponses: 7
    Dernier message: 28/08/2006, 15h15

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