PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : Général » Jointure avec date la plus petite et la plus proche » 22/10/2013 14:01:44

Je n'ai pas bien expliqué mes tables pardon.
dans la table2, le taux est une valeur prise à l'instant v_timestamp.
Il n'y a pas de calcul.Par exemple, j'ajoute la colonne prix à table1.
Ensuite je voulais rapproché les 2 tables de telle sorte que que chaque ligne de la table 1 puisse avoir l'information de taux la plus récente.

#2 Re : Général » Jointure avec date la plus petite et la plus proche » 22/10/2013 10:51:32

Bonjour,

Merci pour ton aide guk92.

J'ai réussi à obtenir ce que je souhaitais avec cette requête :
SELECT DISTINCT ON (table1.id)
    *
FROM
    table1
LEFT JOIN table2 ON (table1.name = table2.name AND table2.v_timestamp <= table1.t_timestamp)
ORDER BY
    table1.id ASC,
    table2.v_timestamp DESC

#3 Re : Général » Jointure avec date la plus petite et la plus proche » 21/10/2013 14:24:30

C'est la le problème, c'est que je ne souhaite pas définir le combien d'unité.
Dans mon raisonnement, je souhaite sélectionner la ligne avec le le plus grand v_timestamp disponible et restant inférieur ou égal au t_timestamp avec des "name" identiques.

Pour le moment le mieux que j'ai pu faire c'est avec cette requête :
SELECT *
FROM table1, table2
WHERE table1."name" = table2."name"
AND table2."V_Timestamp" <= table1."T_Timestamp"
ORDER BY table1.id ASC, table2."V_Timestamp" DESC


Avec cette requête, j'obtiens presque le résultat souhaité mais j'ai encore des lignes en double :

    id   |    name   |   t_timestamp       |    id     |   name     |     taux     |      v_timestamp
--------|------------|----------------------|---------|-------------|-------------|---------------------
    1    |    Nom1   | 2013-10-21 10:23 |     2    |    Nom1    |     1.93     | 2013-10-21 09:33
    1    |    Nom1   | 2013-10-21 10:23 |     1    |    Nom1    |     2.01     | 2013-10-20 10:24
    2    |    Nom4   | 2013-10-21 10:25 |     4    |    Nom4    |     3.50     | 2013-10-21 10:25
    3    |    Nom2   | 2013-10-21 10:27 |     3    |    Nom2    |     0.05     | 2013-10-19 10:00
    4    |    Nom4   | 2013-10-21 10:28 |     4    |    Nom4    |     3.50     | 2013-10-21 10:25

#4 Général » Jointure avec date la plus petite et la plus proche » 21/10/2013 10:35:06

playmobil77d
Réponses : 6

Bonjour,

J'ai les 2 tables suivantes :
table1:                                                           table2:
    id   |    name   |   t_timestamp                         id     |   name     |     taux     |      v_timestamp
--------|------------|----------------------              ---------|-------------|-------------|---------------------
    1    |    Nom1   | 2013-10-21 10:23                   1     |    Nom1    |     2.01     | 2013-10-20 10:24
    2    |    Nom4   | 2013-10-21 10:25                   2     |    Nom1    |     1.93     | 2013-10-21 09:33
    3    |    Nom2   | 2013-10-21 10:27                   3     |    Nom2    |     0.05     | 2013-10-19 10:00
    4    |    Nom4   | 2013-10-21 10:28                   4     |    Nom4    |     3.50     | 2013-10-21 10:25

J'aimerai faire une jointure entre ces 2 tables avec les conditions suivantes :
table1.name = table2.name (ça c'est bon)
et table2.v_timestamp soit la date la plus proche inférieur par rapport à table1.t_timestamp.

Dans l'idée voilà ce que je souhaiterais avoir comme table :

    id   |    name   |   t_timestamp       |    id     |   name     |     taux     |      v_timestamp
--------|------------|----------------------|---------|-------------|-------------|---------------------
    1    |    Nom1   | 2013-10-21 10:23 |     2    |    Nom1    |     1.93     | 2013-10-21 09:33
    2    |    Nom4   | 2013-10-21 10:25 |     4    |    Nom4    |     3.50     | 2013-10-21 10:25
    3    |    Nom2   | 2013-10-21 10:27 |     3    |    Nom2    |     0.05     | 2013-10-19 10:00
    4    |    Nom4   | 2013-10-21 10:28 |     4    |    Nom4    |     3.50     | 2013-10-21 10:25

Auriez-vous une idée de comment faire ce genre de jointure ?

Merci d'avance pour votre aide.

Pied de page des forums

Propulsé par FluxBB