Quel "JOIN" choisir dans ce cas ?
Résolu
phenetas
Messages postés
1190
Statut
Membre
-
phenetas Messages postés 1190 Statut Membre -
phenetas Messages postés 1190 Statut Membre -
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
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:
- Quel "JOIN" choisir dans ce cas ?
- Cas ram - Guide
- Quel macbook choisir - Guide
- Comment désactiver le schéma de verrouillage en cas d'oubli - Guide
- Impossible de choisir point relais cdiscount ✓ - Forum Consommation & Internet
- 2 imei lequel choisir ✓ - Forum Wiko
1 réponse
bonsoir,
je suppose que id_station et id_base sont interchangeables?
pour faire le 2:
et donc le 3:
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
phenetas
Messages postés
1190
Statut
Membre
227
Merci yg_be, ta réponse m'a beaucoup aidé et mon problème est résolu !