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 :

requête sql compliquée


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Architecte de système d’information
    Inscrit en
    Septembre 2005
    Messages
    236
    Détails du profil
    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Septembre 2005
    Messages : 236
    Points : 67
    Points
    67
    Par défaut requête sql compliquée
    Bonjour,

    J'ai une requête un peu compliquée à faire et je sais pas comment m'y prendre, voila mon problème:
    j'ai une table T1 et une table T2 T1(idsoc,annee,ca) et T2(id,idsoc,annee,ca_partiel) , telle que T1.idsoc=T2.idsoc et T1.annee=T2.annee.
    (sachant que (id) provient d'une autre table.)


    dans ce shchéma pour la même année et pour la même société il peut y avaoir plusieurs chiffre d'affaire partiels
    supposns qu'ils sont au nombre de 3 et appeleons les ca1 ca2 ca3

    mon ut est de construire une requête qui me permet d'avoir en sortie une table T telle que
    T (idsoc,annee,ca,ca1,ca2,ca3)

    merci d'avance

  2. #2
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Citation Envoyé par root76 Voir le message
    mon ut est de construire une requête qui me permet d'avoir en sortie une table T telle que
    T (idsoc,annee,ca,ca1,ca2,ca3)
    Quand tu dis une table, tu veux dire une table que tu integreras à ta base de données et qui n'existe pas déjà. Ou bien simplement un tableau de résultats.

  3. #3
    Membre du Club
    Architecte de système d’information
    Inscrit en
    Septembre 2005
    Messages
    236
    Détails du profil
    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Septembre 2005
    Messages : 236
    Points : 67
    Points
    67
    Par défaut
    uniqument un tableau de résultat (ResultSet)

  4. #4
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Citation Envoyé par root76 Voir le message
    uniqument un tableau de résultat (ResultSet)
    As-tu essayé d'exécuter une requête, qui n'aurait pas marcher ? Si oui peux-tu la poster ?

  5. #5
    Membre du Club
    Architecte de système d’information
    Inscrit en
    Septembre 2005
    Messages
    236
    Détails du profil
    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Septembre 2005
    Messages : 236
    Points : 67
    Points
    67
    Par défaut
    Non j'ai rien enore exécuté, j'ai beau cherché comment faire avec mes connaissances sql mais j'ai rien trouvé

  6. #6
    Membre confirmé Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Points : 481
    Points
    481
    Par défaut
    Bonjour,
    Voici une base de travail, en supposant que votre SGBD (quel est-il ?) supporte rank() et with :
    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
     
    WITH T2_BIS AS (
      SELECT
        id,idsoc,annee,ca_partiel,
        rank() over (PARTITION BY idsoc,annee ORDER BY id) rang
      FROM T2)
    SELECT 
        T1.*,
        T2_1.ca_partiel ca1,
        T2_2.ca_partiel ca2,
        T2_3.ca_partiel ca3
      FROM
        T1 left outer join (SELECT * FROM T2_BIS WHERE rang = 1) T2_1 ON T1.IDSOC = T2_1.IDSOC AND T1.ANNEE = T2_1.ANNEE
    	   left outer join (SELECT * FROM T2_BIS WHERE rang = 2) T2_2 ON T1.IDSOC = T2_2.IDSOC AND T1.ANNEE = T2_2.ANNEE
    	   left outer join (SELECT * FROM T2_BIS WHERE rang = 3) T2_3 ON T1.IDSOC = T2_3.IDSOC AND T1.ANNEE = T2_3.ANNEE

  7. #7
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Je ne vois pas trop comment tu peux généraliser ce genre de requête. Supposons que t'ais une société qui a fait 4 chiffres d'affaires partiels, le résultat doit être (idsoc, annee, ca, ca1, ca2, ca3, ca4), t'auras donc une case de plus dans ton tableau. Sinon, pourrais'tu envoyer un exemple de données (avec 3 ou 4 sociétés) et le résultat souhaité après l'exécution de la requête ?

Discussions similaires

  1. [MySQL] Requête SQL compliquée
    Par Shinosha dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 20/06/2011, 16h42
  2. Requête SQl compliquée
    Par mongilotti dans le forum SQL
    Réponses: 5
    Dernier message: 21/04/2010, 12h18
  3. requête sql compliquée
    Par root76 dans le forum Développement
    Réponses: 2
    Dernier message: 22/07/2009, 10h28
  4. Requête SQL compliquée
    Par fips1962 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 22/05/2009, 19h52
  5. requête sql compliquée
    Par caoutchouc dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/05/2007, 17h21

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