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 :

[PostGreSQL] Multiplication de 2 champs provenants de 2 tables


Sujet :

Langage SQL

  1. #1
    Membre du Club Avatar de passie
    Inscrit en
    Février 2005
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 56
    Points : 55
    Points
    55
    Par défaut [PostGreSQL] Multiplication de 2 champs provenants de 2 tables
    Bonjour à tous,
    sous PostgreSQL
    Je cherche à trouver une jointure qui me permettrait de multiplier deux champs venant de deux tables distinctes (en fait 1 vue et une table).
    Mon probléme est que s'il extiste bien un champ commun aux deux ensembles, les valeurs de celui ci dans ma table T1 n'existent pas forcément toutes dans ma table T2 et je voudrai utiliser le champ de T2 tant que le champ correspondant n'est pas atteint.

    Je ne sais pas si je suis trés clair alors voici ce que j'ai.

    Table1 (vue)
    2 champs 1 date et un real

    Table2
    2 champs 1 date et un real


    note : je n'ai pas réellement de champ date mais des id_date qui font références à une table qui contient toute les dates.
    Expl :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Table1
    2000/01/01->10
    2000/01/02->11
    2000/01/03->12
    2000/01/04->13
    2000/01/05->14
    2000/01/06->15
    2000/01/07->16
     
    Table2
    2000/01/02->100
    2000/01/04->1000
    2000/01/07->10000
    et voudrai faire une requete qui me fasse :

    Requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    2000/01/01->(10*100) = 1000
    2000/01/02->(11*100) = 1100
    2000/01/03->(12*100) = 1200
    2000/01/04->(13*1000) = 13000
    2000/01/05->(14*1000) = 14000
    2000/01/06->(15*1000) = 15000
    2000/01/07->(16*10000) = 160000
    En fait je garde le min des champs dates de la Table2 tant que le champ date de la Table1 n'a pas atteint une nouvelle valeur dans la table2
    Je me doute que je doit aussi pouvoir le faire en utilisant un script php mais j'aimerai aussi le faire avec une requete SQL ??

    J'espére être assez clair
    Merci d'avance ?

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Je tenterais un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT Table1.cDate, Table1.cReal , Table2.cReal, Table1.cReal * Table2.cReal 
    FROM Table1 
    	INNER JOIN Table2 
    		ON Table2.cDate = (	SELECT MAX(Table2Bis.cDate) 
    					FROM Table2 Table2Bis 
    					WHERE Table2Bis.cDate <= Table2.cDate
    					)
    Mais ça ne gère pas les lignes pour laquelle il n'y a pas de ligne antécédante.

  3. #3
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,

    Comme ça peut-être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT 	t1.id,
    	MAX (t1.vl * COALESCE (t2.vl, (SELECT MIN(vl) FROM Table2)))
    FROM	Table1 t1
    LEFT JOIN Table2 t2 
    ON 	t2.id <= t1.id
    GROUP BY t1.id
    ORDER BY t1.id;

Discussions similaires

  1. Requête faite sur plusieurs champs provenant de plusieurs tables
    Par olivier777 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 14/05/2008, 17h34
  2. Réponses: 1
    Dernier message: 03/10/2007, 08h54
  3. Réponses: 5
    Dernier message: 03/02/2006, 10h45
  4. sous-formulaire : champs provenant plusieurs tables
    Par patbeautifulday1 dans le forum IHM
    Réponses: 13
    Dernier message: 21/12/2005, 11h17
  5. CR9 - Récupérer valeurs multiples d'un champ paramètre
    Par CR9-Deb dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 06/07/2005, 16h08

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