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 :

Besoin d'aide pour requête update


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Besoin d'aide pour requête update
    Bonjour,

    Je cherche faire une une requete de mise à jour d'une table client en fonction de la recherche d'un contrat dans une autre table :

    J'ai deux tables :

    table client {
    id_client
    num_client
    etat_client
    num_contrat}

    table contrat{
    num_contrat
    num_client
    libel_contrat
    }

    Je doit utiliser le champs num_client de la table Client et effectuer une recherche dans la table Contrat.
    Si un seul résultat :
    copie de la valeur contrat.num_contrat dans client.num_contrat et update de client.etat_client à "contrat_trouve"
    Si pas de résultat ou plusieurs résultats :
    update de client.etat_client à "contrat_non_trouve"

    vu le volume de données traitées je doit faire une requête ensembliste du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    update client a
    set (a.num_client, a.num_contrat, a.etat_client) = (select c.num_client, c.num_contrat,'contrat_trouve') from contrat c
    where a.num_client = c.num_client)
    Mais je ne trouve pas comment traiter le cas ou il y a plusieurs contrats.

    Quelqu'un peut-il m'apporter son aide précieuse?

    Merci

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Plutôt que de faire ça, revois ton modèle de données !

    Un client pouvant avoir plusieurs contrats, c'est la table des contrats qui référence le client dans une de ses colonnes. La colonne num_contrat n'a rien à faire dans la table des clients.

    Je ne vois l'utilité de l'opération étant donné qu'il suffit d'une requête pour savoir, au choix :
    - quels sont les contrats d'un client ;
    - quel est le nombre de contrats d'un client ;
    - quels sont les clients sans contrat...

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Justement un client ne doit avoir qu'un seul contrat, c'est pour cela que l'on ne sélectionne pas les contrats en doublon.

    La base est déjà conçu je ne peux la modifier.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Ah parce qu'en plus, s'il y a plusieurs contrats pour un client, c'est que le contrat a été saisi en double ?

    La base est déjà conçu je ne peux la modifier.
    Ben tu engueuleras le concepteur de ma part !

    Parce que, en plus, dans la table des contrats, ce n'est pas le num_client, potentiellement alphanumérique, qu'il faudrait mettre en clé étrangère mais l'identifiant du client, qui, je l'espère, est un entier auto-incrémenté.

    Est-ce qu'au moins, les doublons sont des vrais doublons intégraux (toutes les colonnes ont la même valeur pour un contrat) ou des doublons partiels (infos différentes dans certaines colonnes pour un contrat) ?

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Ah parce qu'en plus, s'il y a plusieurs contrats pour un client, c'est que le contrat a été saisi en double ?
    Il existe plusieurs contrats pour un client, a des états différents (clos , e cours etc..) je ne suis pas entrée dans les détails...
    Ben tu engueuleras le concepteur de ma part !
    c'est fait, il est partie pleurer là.
    Parce que, en plus, dans la table des contrats, ce n'est pas le num_client, potentiellement alphanumérique, qu'il faudrait mettre en clé étrangère mais l'identifiant du client, qui, je l'espère, est un entier auto-incrémenté.
    oui auto-incrémenté

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Les états du contrat sont enregistrés comment ?
    Par une clé étrangère numérique ou une valeur alphanumérique mochement répétée de contrat en contrat ?

    Bref, conformément aux règles de ce forum, tu devrais nous en dire un peu plus :
    - SGBD utilisé ;
    - structure des tables ;
    - exemple de données ;
    - résultat souhaité.

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    C'est une base oracle.

    La table contrat est un cache d'une autre application.
    Je doit effectuer une recherche dans ce cache avec client .num_client = contrat.num_client et client.num_contrat= contrat.num_contrat

    La table contrat est alimentée par des fichiers utilisateurs, et donc il peut avoir 2 contrats avec le même num_client et même num_contrat mais avec les autres champs différents.

    Si la recherche retourne un seul résultat alors on met à jour l’état du client à "contrat_trouve" sinon (>2 contrats ou pas de contrat) alors on met a jour avec l’état avec "contrat_non_trouve"

    Mon soucis concerne le faite de pouvoir comptabilisé le nombre de ligne retour.

    Merci.

  8. #8
    Membre éclairé Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Points : 769
    Points
    769
    Par défaut
    Citation Envoyé par RedDrMaboul Voir le message
    La base est déjà conçu je ne peux la modifier.
    Heu... Il conviendrait de regarder le coût d'un changement par rapport aux bénéfices avant d'opposer un non catégorique...

    A côté de mon bureau, Bouygues a construit des immeubles tellement pourris qu'ils sont en train de les détruire pour en reconstruire de nouveaux... Ils n'ont jamais été utilisés... Mais ça coûtait plus cher de les faire tenir debout...

    Cordialement,

    Arkhena

Discussions similaires

  1. Besoin d'aide pour requête update imbriqué
    Par nabilo_22 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 03/03/2009, 23h05
  2. Besoin d'aide pour requête SQL
    Par dinver78 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 21/05/2007, 18h20
  3. Besoin d'aide pour requête simple
    Par vallica dans le forum Requêtes
    Réponses: 6
    Dernier message: 16/02/2007, 09h33
  4. Besoin d'aide pour requête SQL
    Par vallica dans le forum Requêtes
    Réponses: 10
    Dernier message: 08/06/2006, 23h16
  5. Besoin d'aide pour requête sur grosse table
    Par Fabouney dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/01/2006, 09h01

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