Bonjour,
Voilà, j'ai une table qui liste pour un objet donné, les id des éléments dont est constitué cet objet.
par exemple :
objet élément
toto 5
toto 8
toto 12
titi 4
titi 8
tutu 7
tata 1
tata 3
tata 12
tata 2
signifie que l'objet toto est constitué des éléments 5 8 et12
signifie que l'objet titi est constitué des éléments 4 et 8
signifie que l'objet tutu est constitué de l'élément 7
signifie que l'objet tata est constitue des éléments 1 2 3 et 12
je cherchais une requête qui sort chaque objet s'il contient plus d'un élément et trie par le nombre d'éléments dont il constitué mais en gardant chaque ligne visible !
tutu est constitué de 1 élément
titi est constitué de 2 éléments
toto est constitué de 3 éléments
tata est constitué de 4 éléments
et avoir une sortie du genre
objet élément count
titi 4 2
titi 8 2
toto 5 3
toto 8 3
toto 12 3
tata 1 4
tata 3 4
tata 2 4
tata 12 4
si je fais un:
j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 select objet, count(objet) ct from table group by objet having ct > 1 order by ct asc, objet asc ;
titi 2
toto 3
tata 4
ok, tutu n'apparait plus, mais j'ai perdu l'info de savoir quels sont les éléments dont sont constitués chaque objet.
j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 select objet, element, count(objet) ct from table group by objet having ct > 1 order by ct asc, objet asc ;
objet élément count
titi 4 2
toto 5 3
tata 1 4
Je n'ai QUE le premier élément pour chaque objet et pas les autres.
J'ai essayé des solutions avec "distinct objet" sans succès.
J'ai essayé d'enlever le group by car c'est lui je pense qui réalise l'agrégation des lignes, mais cela ne donne rien non plus.
Merci pour votre aide.







Répondre avec citation






Partager