Quel "JOIN" choisir dans ce cas ?

Résolu/Fermé
phenetas Messages postés 1108 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 31 août 2017 - 27 févr. 2017 à 19:14
phenetas Messages postés 1108 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 31 août 2017 - 1 mars 2017 à 11:00
Bonjour,

J'ai une base SQL avec (entre autre) deux tables, qui me servent à enregistrer des données à propos de stations d'accueil et d'objets leur étant associés.

Les tables intéressantes avec les attributs intéressants sont :

"Stations" (id [unique])

"Objets" (id [unique]| id_station | type_objet)

Les stations sont uniques, elles peuvent avoir plusieurs objets associés. Le "type_objet" est soit "A" ou "B".


En ce moment j'essaye d'afficher, pour chaque base quel est l'objet le plus ancien lui étant associé. Pour cela je compte me baser sur l'id de l'objet, qui s'incrémente. Donc le plus ancien est le plus petit.

L'algoritme que j'essaye de mettre en place est le suivant, mais comme je débute en SQL je me prends un peu la tête :

1) Choisir uniquement les "Stations" qui ont associé des objets de type "A" ET "B"
2) Parmi "1)", ne sélectionner que l'objet ayant l'"id" le plus petit
3) Afficher le résultat sous forme : "id_objet | id_base | type_objet"





J'arrive à faire 1)

J'ai un peu de mal pour le 2)

Et pour le 3 je pense que j'aurais besoin de faire un JOIN entre mon résultat 1) et 2), mais je ne suis pas sur du type de JOIN à employer ici.

Un SQL gourou peut-il m'aider svp ?


D'avance merci





A voir également:

1 réponse

yg_be Messages postés 23349 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 novembre 2024 Ambassadeur 1 554
27 févr. 2017 à 20:40
bonsoir,
je suppose que id_station et id_base sont interchangeables?
pour faire le 2:
select min(id) from Objets where type_objet = "A" or type_objet = "B" group by id_base

et donc le 3:
select Objets.* from Objets, (select min(id) as minid from Objets where type_objet = "A" or type_objet = "B" group by id_base) as m
where m.minid = Objets.id
1
phenetas Messages postés 1108 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 31 août 2017 225
1 mars 2017 à 11:00
Merci yg_be, ta réponse m'a beaucoup aidé et mon problème est résolu !
0