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 :

Aide pour requête complexe


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 32
    Points : 26
    Points
    26
    Par défaut Aide pour requête complexe
    Bonjour à tous,

    Je quémande votre aide sur une requête que je n'arrive pas à faire correctement.

    Alors d'un côté j'ai une table temporaire avec un remplissage en ligne du genre
    - cas 1, type 1, 200
    - cas 1, type 2, 300
    - cas 2, type 1, 150
    - cas 2, type 3 ,0

    Et j'aimerai reconsolider tout ça dans une structure en colonne avec mon cas, mon type et mon montant. Ex par rapport à ci-dessus :
    - cas 1, 200, 300, 0
    - cas 2, 150, 0, 0

    J'ai essayé en faisant des jointures à gauche sur ma table temmporaire avec des ALIAS mais ça ne marche pas bien...
    Est-ce que qualqu'un pourrait m'aider ?

    Merci.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Si le nombre de valeurs de TYPE n'est pas limité, il n'est pas possible de faire une telle requête.
    Il s'agit là de cosmétique, qui n'est pas le but du langage SQL.
    C'est à l'application de se charger de la mise en forme des données.

    Citation Envoyé par marivi Voir le message
    J'ai essayé en faisant des jointures à gauche sur ma table temporaire avec des ALIAS mais ça ne marche pas bien...
    Pourriez-vous nous présenter une ébauche de la requête que vous tentez de mettre au point.
    Cela sera plus facile pour la faire évoluer.
    En précisant le SGBD que vous utilisez et sa version, les réponses proposées seront adaptées aux spécificités et limitations de celui-ci.
    Conseils à lire avant de poster sur ce forum
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 32
    Points : 26
    Points
    26
    Par défaut
    Le nombre de valeur type est limité à 4 et je bosse sous SQL SERVER

    Voici le détail de mes requêtes :

    1ère requête dans 1ère table temp consolidée en ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT key_contrat, code_garantie, type, montant
    FROM temp_montant_bySinGarType, vsinistres
    WHERE key_contrat = sin_key
    AND sin_code = 'FBA0610813'
    résultat :
    26253 DOM_ALT reglt -1447.240000
    26253 DOM_ALT prov .000000
    26253 RC_ALT ida -1204.000000
    2ème requête pour consolider en colonne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT prov.key_contrat, prov.code_garantie, prov.montant AS montant_prov, COALESCE(reglt.montant, 0) AS montant_reglt, COALESCE(rec.montant, 0) AS montant_rec, 
    COALESCE(ida.montant, 0) AS montant_ida
    FROM temp_montant_bySinGarType AS prov 
    LEFT OUTER JOIN temp_montant_bySinGarType AS reglt ON prov.key_contrat = reglt.key_contrat AND reglt.type = 'reglt' AND prov.code_garantie = reglt.code_garantie 
    LEFT OUTER JOIN temp_montant_bySinGarType AS rec ON prov.key_contrat = rec.key_contrat AND rec.type = 'rec' AND prov.code_garantie = rec.code_garantie 
    LEFT OUTER JOIN temp_montant_bySinGarType AS ida ON prov.key_contrat = ida.key_contrat AND ida.type = 'ida' AND prov.code_garantie = ida.code_garantie 
    WHERE prov.type = 'prov'
    AND prov.key_contrat = 26253
    Le souci est que comme je pars d'un type 'prov' et que je fais des jointures à gauche à partir de ça, je loupe toutes mes lignes qui n'ont pas de montant de ce type là. Cf résultat ci-dessous, il me manque la ligne pour la RC_ALT

    26253 DOM_ALT .000000 -1447.240000 .000000 .000000

    26253 RC_ALT .000000 .0000000 .000000 -1204.000000


    J'espère que c'est assez clair !

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

Discussions similaires

  1. demande d'aide pour requête complexe avec SUM
    Par sibia dans le forum Requêtes
    Réponses: 1
    Dernier message: 25/04/2013, 09h09
  2. [MySQL-5.5] Demande d'aide pour requête complexe
    Par gattou dans le forum Requêtes
    Réponses: 4
    Dernier message: 23/04/2013, 10h29
  3. générer des donnees / aide pour requête complexe
    Par djinnwatcher dans le forum Débuter
    Réponses: 7
    Dernier message: 10/08/2009, 13h56
  4. [sqlbaseserver]demande de conseils/aides pour requêtes
    Par GéniuS77 dans le forum Langage SQL
    Réponses: 14
    Dernier message: 18/03/2004, 17h27
  5. Aide pour Requête
    Par Guiche dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/11/2003, 20h18

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