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

Requêtes et SQL. Discussion :

Requête sur 2 tables et changements de valeurs


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Requête sur 2 tables et changements de valeurs
    Bonjour,

    Je suis désolé mais je sens que je vais impatienter bien des gens avec ma question de débutant, ceci dit, pris par le temps je poste ma question (et aussi parce que je m'y retrouve mal avec le tutoriel sur les jointures, disposant d'une vieille version de ACCESS au travail).

    Voila, je fais une requête qui fait appel à deux tables, dans ma table 1 j'ai un nom de deal (finance), l'agence de notation qui le note, l'ancienne note et la nouvelle note. Comme suit :

    DEAL___________AGENCE____________RATING FROM________NEW RATING
    Deal 1__________Moody's_______________Ba1________________Caa3
    Deal 2___________S&P__________________BB-________________CCC+
    Deal 3___________Moody's_______________Ba3_______________Caa2
    Deal 4___________Fitch_________________BB+________________CCC-

    Dans une autre table, j'ai construis une correspondance des ratings entre agences :

    S&P________MOODY'S_________FITCH___________RATING GENERAL
    BB___________Ba1_____________BB____________________BB
    BB+__________Ba2_____________BB+__________________BB
    BB-__________Ba3_____________BB-____________________BB
    CCC__________Caa1___________CCC____________________CCC
    CCC-_________Caa2____________CCC-_________________CCC
    CCC+_________Caa3___________CCC+___________________CCC



    En fait, chaque agence utilise beaucoup une échelle de rating différente mais j'aimerai changer chaque rating par mon "rating général" et dans une nouvelle table, ou plutot requête, pouvoir afficher une liste avec les nouveaux ratings à la place des anciens. Exemple ici j'aimerai donc obtenir :

    DEAL___________AGENCE__________RATING FROM_______NEW RATING
    Deal 1__________Moody's_____________BB_________________CCC
    Deal 2___________S&P________________BB_________________CCC
    Deal 3___________Moody's____________BB_________________CCC
    Deal 4___________Fitch______________BB__________________CCC

    Pour ensuite pouvoir construire un tableau croisé dynamique sous excel sans avoir cinquante milles ratings en lignes et en colonne mais uniquement mon BB et mon CCC (qui ne sont que des exemples puisque la liste finale des mes ratings sera AAA AA A BBB BB B ainsi de suite jusqu'à D ..)

    Mais le tout en ayant enlevé les occurences style - ou + ou aa1 aa2 aa3.

    Est ce que je suis clair?

    Merci à celui qui pourra m'aider, si je suis aidable

  2. #2
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 591
    Points
    3 591
    Billets dans le blog
    8
    Par défaut
    Salut
    Peux-tu donner une version française de tes expressions. Je remarque par ailleurs que certaines expressions comme "S&P" sont à la fois en-tête de colonne et donnés de ligne. BBB ou AAA ou CCC signifient quoi?
    La seule chose que j'ai bien compris c'est que tu ne veux plus voir +,-,2... à la suite des AAA ...

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Merci de ta réponse !

    En fait en majuscule ce sont les titres des colonnes.

    Quand j'écris AGENCE, il s'agit du titre de ma colonne, et les lettres AAA, AA, A, BBB, BB, B etc. sont les notes attribuées par ces agences.

    DEAL_________AGENCE________RATING FROM________NEW RATING
    Deal 1________Moody's__________BBB+_________________BB-

    Ca se lirait : le deal 1 a été noté par l'agence Moody's (le nom de l'agence de notation), son ancien rating (notation) est de BBB+ et son nouveau rating est de BB-.

    Et le résultat que je recherche serait dans une nouvelle table de voir apparaitre ces ratings mais BBB à la place de BBB+ et BB à la place de BB-.

    Du coup je me suis fais une table de correspondance (le titre des colonnes en gras) :

    S&P________MOODY'S_________FITCH___________RATING GENERAL
    BB___________Ba1_____________BB____________________BB
    BB+__________Ba2_____________BB+__________________BB
    BB-__________Ba3_____________BB-____________________BB
    CCC__________Caa1___________CCC____________________CCC
    CCC-_________Caa2____________CCC-_________________CCC
    CCC+_________Caa3___________CCC+___________________CCC

    Qui se lit comme tel pour la 1ère ligne en italique par exemple: quand l'agence de notation S&P attribue un BB, l'agence de notation Moody's attribue un Ba1 (note équivalente) et l'agence de notation Fitch attribue BB (note équivalente) et moi j'aimerai que maintenant toutes ces notes deviennent BB.

    C'est comme si tous les profs notaient sur 20 et un prof notait sur 10 ses élèves. Alors pour le prof qui note 2/10 à un élève, je voudrai en important dans la nouvelle table que ca se change d'un seul coup en 4/20.

    Car si l'agence de notation S&P et Fitch ont la même échelle de rating comme tu peux le voir, l'agence Moody's note différement, et je cherche donc à faire des conversions.

  4. #4
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    Bonjour,

    Ca serait sans doute plus simple pour la suite si ta table de correspondance avait cette allure :
    AGENCE________RATING ________RATING GENERAL
    Moody's__________Ba1_________________BB
    La clé de la table étant le couple (Agence/Rating).

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Et donc faire une table pour chaque agence ?

    Table1
    AGENCE_________RATING___________RATING GENERAL
    Moody's_________AAA+_____________AAA
    Moody's_________AAA-_____________AAA
    Moody's_________Ba1_______________BB
    ....

    Table2
    AGENCE_________RATING___________RATING GENERAL
    S&P_________AAA+_____________AAA
    S&P_________AAA-_____________AAA
    S&P_________BB+_______________BB
    ........

    Table3
    AGENCE_________RATING___________RATING GENERAL
    Fitch_________AAA+_____________AAA
    Fitch_________AAA-_____________AAA
    Fitch_________BB+_______________BB
    ........

    A vrai dire je m'en fiche un peu de la manière de procéder, du moment que ca marche..

    Merci de ton aide

  6. #6
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    Non, une seule table pour toutes les agences.

    Ensuite, une requête entre cette table et l'autre

    DEAL_________AGENCE________RATING FROM________NEW RATING
    Deal 1________Moody's__________BBB+_________________BB-

    Te donnera

    DEAL_________AGENCE________RATING GENERAL FROM________NEW RATING GENERAL
    Deal 1________Moody's__________BBB+_________________BB-

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Points : 1
    Points
    1
    Par défaut


    Comme ça ?

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT AllRatings.Date, 
    AllRatings.[Deal ISSUER], 
    AllRatings.series, 
    AllRatings.Class, 
    AllRatings.RatingAgency, 
    AllRatings.PreviousRating, 
    ListRating.[RATING GENERAL], 
    AllRatings.RatingTo, 
    ListRating.[RATING GENERAL]
    FROM AllRatings INNER JOIN ListRating 
    ON AllRatings.ID = ListRating.ID;
    Avec mon pauvre code je vais pas aller loin.

    Sachant que dans la table ListRating, qui est celle que j'ai mis en fichier image au dessus, access ne me laisse pas définir "rating" comme clé primaire en me disant que je dois d'abord autoriser les "duplications".. need help.

  9. #9
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    La clé primaire est unique.
    C'est donc le couple Agence/Rating qui doit être la clé primaire.

    Ensuite la jointure entre AllRatings et ListRating doit se faire sur l'Agence et le Rating.
    De plus, la table ListRating doit être en double dans la requête, pour avoir le RatingGénéral équivalement au RatingFrom et celui équivalent au NewRating

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    OK, quand je paramètre mes tables, ACCESS refuse de définir l'Agence en tant que clé primaire parce qu'il y a des champs NULL. Comment y remédier?

    Tu es certain que ce champs peut être défini comme primaire? Car il n'y a que trois agences et 50 000 lignes peuvent contenir la même agence de notation, ce qui renvoit donc la même valeur pour un nombre multiple de lignes.

    Merci.

  11. #11
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    La clé primaire doit être sur Agence/Rating.
    Pourquoi y-a-t-il des lignes avec l'Agence à Null ?

    Pour un couple Agence/Rating, tu n'as qu'un seul Rating General.

  12. #12
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Points : 1
    Points
    1
    Par défaut


    J'avais 5 enregistrements avec des champs nuls que j'ai supprimé.

    Maintenant le message d'erreur stipule qu'on ne peut définir RatingAgency (AGENCE) comme clé primaire puisqu'il y a des champs "dupliqués". Je suppose des champs de même valeurs, et qu'il faut tout d'abord autoriser les champs dupliqués. Mais comment?


  13. #13
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    On ne parle pas de la même table.
    Je parle de la table dans laquelle il y a les champs "Agence", "Rating" et "RatingGeneral" (sans espace, sans accent, c'est mieux).
    La clé doit être sur le couple Agence/Rating.

    Sur ta table AllRatings, la clé est sur ID.
    Il y a peut-être aussi un index unique.

Discussions similaires

  1. [MySQL-5.6] Faire une requête sur deux tables pour avoir la valeur MAX sans le GROUP BY
    Par emykev22 dans le forum Requêtes
    Réponses: 1
    Dernier message: 04/06/2014, 13h12
  2. Problème de requêtes sur deux tables
    Par Pymm dans le forum Access
    Réponses: 6
    Dernier message: 06/09/2005, 10h06
  3. Requête sur plusieurs tables
    Par drinkmilk dans le forum Langage SQL
    Réponses: 8
    Dernier message: 11/07/2005, 13h25
  4. Requête sur 2 tables ?
    Par kibodio dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/03/2005, 16h57
  5. Requête sur 2 tables et surtout novice...
    Par kibodio dans le forum Langage SQL
    Réponses: 13
    Dernier message: 03/03/2005, 16h45

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