J'ai deux tables:Créer une requête SQL pour récupérer des données à partir de deux tables
T_STOCK
: clé primaire est id
, seller
, et quelques autres champs laissent dire a
et b
. T_FLOW
: la clé primaire est (id
+ startdate
) et quelques autres champs, par exemple c
et d
.
Je veux une requête qui retourne toutes les colonnes pour chaque enregistrements de T_STOCK
concernant un seller
spécifique, mais complété par les colonnes (startDate
, c
et d
) de la table T_FLOW
.
La relation entre T_STOCK
et T_FLOW
est basée sur l'attribut id
. Chaque fois qu'un enregistrement avec un ID spécifique existe dans T_STOCK
, au moins un enregistrement existe dans T_FLOW
pour cet ID. Toutefois, il peut arriver que plusieurs enregistrements existent dans T_FLOW
. Dans ce cas, je dois considérer seulement le le plus récent (c'est-à-dire celui avec max(startDate)
).
En d'autres termes, si nous avons le contenu des tableaux suivants:
+---------------------+
| T_STOCK |
+----+--------+---+---+
| ID | SELLER | a | b |
+----+--------+---+---+
| 01 | foobar | 1 | 2 |
+----+--------+---+---+
| 02 | foobar | 3 | 4 |
+----+--------+---+---+
| 03 | foobar | 5 | 6 |
+----+--------+---+---+
+---------------------------+
| T_FLOW |
+----+------------+----+----+
| ID | StartDate | c | d |
+----+------------+----+----+
| 01 | 01/01/2010 | 7 | 8 |
+----+------------+----+----+
| 02 | 01/01/2010 | 9 | 10 |
+----+------------+----+----+
| 02 | 07/01/2010 | 11 | 12 |
+----+------------+----+----+
| 03 | 03/01/2010 | 13 | 14 |
+----+------------+----+----+
| 03 | 05/01/2010 | 15 | 16 |
+----+------------+----+----+
Le résultat de la requête doit être:
+----+--------+---+---+------------+----+----+
| ID | SELLER | a | b | startDate | c | d |
+----+--------+---+---+------------+----+----+
| 01 | foobar | 1 | 2 | 01/01/2010 | 7 | 8 |
+----+--------+---+---+------------+----+----+
| 02 | foobar | 3 | 4 | 03/01/2010 | 11 | 12 |
+----+--------+---+---+------------+----+----+
| 03 | foobar | 5 | 6 | 01/01/2010 | 15 | 16 |
+----+--------+---+---+------------+----+----+
Comment puis-je écrire ma requête alors?
Votre relation me semble un peu bizarre. Votre stock 'PK' est' (id, vendeur) 'et vous pouvez avoir deux stocks avec le même' id', mais les flux sont liés par 'id' seulement. Est-ce intentionnel? – Quassnoi
+1 pour votre art ascii! –
@Quassnoi, oui, c'est intentionnel :) – romaintaz