Quel "JOIN" choisir dans ce cas ?
Résolu
phenetas
Messages postés
1108
Date d'inscription
Statut
Membre
Dernière intervention
-
phenetas Messages postés 1108 Date d'inscription Statut Membre Dernière intervention -
phenetas Messages postés 1108 Date d'inscription Statut Membre Dernière intervention -
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
- Quel linux choisir - Guide
- Comment désactiver le schéma de verrouillage en cas d'oubli - Guide
- Leboncoin ce numéro de téléphone est déjà associé à un compte. merci de choisir un autre numéro. ✓ - Forum Réseaux sociaux
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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
1108
Date d'inscription
Statut
Membre
Dernière intervention
227
Merci yg_be, ta réponse m'a beaucoup aidé et mon problème est résolu !