0 votes

SQL2005 + retour d'un résultat distinct basé sur la date sur une table dans une jointure interne

J'ai un problème, ce que je veux faire est très simple et je pense que je ne cherche pas la bonne solution. Je veux simplement renvoyer un tableau qui est trié sur la base d'un datestamp d'un tableau lié.

ie :

Table 1:
200   MyStuff   OK
201   Other     Why
202   Flat      So

Table 2:
1  200  5/12/2009  MyValue1
2  200  5/11/2009  MyValue2
3  201  7/10/2009  MyValue3
4  201  7/08/2009  MyValue4

Je veux que la première table soit triée en fonction des dates de la deuxième table, et que le résultat soit le suivant

201  Other   Why
200  MyStuff OK
202  Flat    So

J'ai essayé de faire une jointure interne, mais ce que je sélectionne de façon distincte doit inclure la date de la deuxième table sur laquelle je trie, ce qui fait que je me retrouve avec des pk en double dans la table de retour.

Aidez-moi à comprendre mon erreur de débutant.

0voto

micahtan Points 6457

Étant donné que vous pouvez avoir plusieurs lignes dans le tableau 2 pour chaque ligne du tableau 1, vous devrez décider de la manière de traiter les dates en matière de tri.

Supposons que vous vouliez trier sur la date maximale, vous feriez quelque chose comme ça :

select table1.*, t2.max_ds

de la table 1

inner join (select id, max(datestamp) as max_ds from table2 group by id) t2

on t2.id = table1.id

order by t2.max_ds

Vous devrez évidemment ajouter des fonctions de gestion des nullités et autres, mais cela devrait vous permettre de commencer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X