[SQL] Problème de tris avec notion Père-Fils
Fermé
overpedro
Messages postés
29
Date d'inscription
mardi 5 décembre 2006
Statut
Membre
Dernière intervention
7 décembre 2006
-
6 déc. 2006 à 10:46
Profil bloqué - 7 déc. 2006 à 18:21
Profil bloqué - 7 déc. 2006 à 18:21
A voir également:
- [SQL] Problème de tris avec notion Père-Fils
- Numéro père noël whatsapp - Accueil - Messagerie instantanée
- Branchement prise jack 3 fils ✓ - Forum Audio
- Blob sql ✓ - Forum Webmastering
- Branchement prise téléphone adsl 4 fils ✓ - Forum câblage
- A quoi servent les 8 fils rj45 - Forum câblage
2 réponses
1er essai:
remplace ton "order by MBR_Pére" par "order by GEN_NUM"
voyons....
remplace ton "order by MBR_Pére" par "order by GEN_NUM"
voyons....
overpedro
Messages postés
29
Date d'inscription
mardi 5 décembre 2006
Statut
Membre
Dernière intervention
7 décembre 2006
6 déc. 2006 à 11:44
6 déc. 2006 à 11:44
Ca donne ça :
GEN_ID LIB_GEN GEN_NUM MBR_ID MBR_LIBELLE MBR_PERE MBR_HIER_TYP MBR_SUPPR
G1A1 Axe_T 1 MB1 AXE_TARIF NULL 0 0
G2A1 Hier_T 2 MB22 Hier_P MB1 0 0
G3A1 BU_T 3 MB2B BU_TF MB22 0 1
G3A1 BU_T 3 MB2E BU_TC MB22 0 1
G3A1 BU_T 3 MB2 BU_TK MB22 0 1
G4A1 Gamme_T 4 MBG3 Gam_T2 MB2B 0 1
G4A1 Gamme_T 4 MBH PB_Gam MB2E 0 1
G4A1 Gamme_T 4 MBN Gam_TDR MB2 0 1
G4A1 Gamme_T 4 MBS3 Gam_T5 MB2 0 1
G4A1 Gamme_T 4 MBT3 Gam_T8 MB2B 0 1
G5A1 Tarif 5 MBT4 K7_Tarif MBN 0 1
G5A1 Tarif 5 MBT5 Trf_P MBG3 0 1
G5A1 Tarif 5 MB4Z Tarif_K7 MBT3 0 1
G5A1 Tarif 5 MB5RX Tarif_BB MBH 0 1
G5A1 Tarif 5 MBB Tarif_B MBN 0 1
G5A1 Tarif 5 MBBB TrfKK MBS3 0 1
G5A1 Tarif 5 MB01 Trif_H MBT3 0 1
C'est pas encore ça ... ;-) j'avais déjà essayer, j'ai essayer de lire qulques discussions à ce sujet, et pour ce type de problème les gens parlent de Recursivité et étant novice en SQL c'est pas évident à capter pour moi ...
GEN_ID LIB_GEN GEN_NUM MBR_ID MBR_LIBELLE MBR_PERE MBR_HIER_TYP MBR_SUPPR
G1A1 Axe_T 1 MB1 AXE_TARIF NULL 0 0
G2A1 Hier_T 2 MB22 Hier_P MB1 0 0
G3A1 BU_T 3 MB2B BU_TF MB22 0 1
G3A1 BU_T 3 MB2E BU_TC MB22 0 1
G3A1 BU_T 3 MB2 BU_TK MB22 0 1
G4A1 Gamme_T 4 MBG3 Gam_T2 MB2B 0 1
G4A1 Gamme_T 4 MBH PB_Gam MB2E 0 1
G4A1 Gamme_T 4 MBN Gam_TDR MB2 0 1
G4A1 Gamme_T 4 MBS3 Gam_T5 MB2 0 1
G4A1 Gamme_T 4 MBT3 Gam_T8 MB2B 0 1
G5A1 Tarif 5 MBT4 K7_Tarif MBN 0 1
G5A1 Tarif 5 MBT5 Trf_P MBG3 0 1
G5A1 Tarif 5 MB4Z Tarif_K7 MBT3 0 1
G5A1 Tarif 5 MB5RX Tarif_BB MBH 0 1
G5A1 Tarif 5 MBB Tarif_B MBN 0 1
G5A1 Tarif 5 MBBB TrfKK MBS3 0 1
G5A1 Tarif 5 MB01 Trif_H MBT3 0 1
C'est pas encore ça ... ;-) j'avais déjà essayer, j'ai essayer de lire qulques discussions à ce sujet, et pour ce type de problème les gens parlent de Recursivité et étant novice en SQL c'est pas évident à capter pour moi ...
Profil bloqué
>
overpedro
Messages postés
29
Date d'inscription
mardi 5 décembre 2006
Statut
Membre
Dernière intervention
7 décembre 2006
6 déc. 2006 à 12:26
6 déc. 2006 à 12:26
3éme essai:
fait un" GROUP BY" seulement sur la table" member" suivant MBR_Pére.Et dis moi ce que ça donne....
fait un" GROUP BY" seulement sur la table" member" suivant MBR_Pére.Et dis moi ce que ça donne....
overpedro
Messages postés
29
Date d'inscription
mardi 5 décembre 2006
Statut
Membre
Dernière intervention
7 décembre 2006
>
Profil bloqué
6 déc. 2006 à 12:31
6 déc. 2006 à 12:31
Il me répond la même chose :
Msg 8120, Niveau 16, État 1, Ligne 3
La colonne 'dbo.GENERATIONS.GEN_ID' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
Pourtant je ne fais qu'un GROUP BY sur Membres ?!?
SELECT dbo.GENERATIONS.GEN_ID,
dbo.GENERATIONS.LIB_GEN,
dbo.GENERATIONS.GEN_NUM,
dbo.MEMBRES.MBR_ID,
dbo.MEMBRES.MBR_LIBELLE,
dbo.MEMBRES.MBR_PERE,
dbo.MEMBRES.MBR_HIER_TYP,
dbo.MEMBRES.MBR_SUPPR
FROM dbo.GENERATIONS,dbo.MEMBRES
WHERE dbo.GENERATIONS.GEN_ID=dbo.MEMBRES.GEN_ID
AND dbo.GENERATIONS.AXE_ID='A1'
GROUP BY dbo.MEMBRES.MBR_PERE;
Msg 8120, Niveau 16, État 1, Ligne 3
La colonne 'dbo.GENERATIONS.GEN_ID' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
Pourtant je ne fais qu'un GROUP BY sur Membres ?!?
SELECT dbo.GENERATIONS.GEN_ID,
dbo.GENERATIONS.LIB_GEN,
dbo.GENERATIONS.GEN_NUM,
dbo.MEMBRES.MBR_ID,
dbo.MEMBRES.MBR_LIBELLE,
dbo.MEMBRES.MBR_PERE,
dbo.MEMBRES.MBR_HIER_TYP,
dbo.MEMBRES.MBR_SUPPR
FROM dbo.GENERATIONS,dbo.MEMBRES
WHERE dbo.GENERATIONS.GEN_ID=dbo.MEMBRES.GEN_ID
AND dbo.GENERATIONS.AXE_ID='A1'
GROUP BY dbo.MEMBRES.MBR_PERE;
Profil bloqué
>
overpedro
Messages postés
29
Date d'inscription
mardi 5 décembre 2006
Statut
Membre
Dernière intervention
7 décembre 2006
6 déc. 2006 à 12:40
6 déc. 2006 à 12:40
non,en fait la table GENERATIONS ne doit pas intervenir;essai ça:
SELECT
dbo.MEMBRES.MBR_ID,
dbo.MEMBRES.MBR_LIBELLE,
dbo.MEMBRES.MBR_PERE,
dbo.MEMBRES.MBR_HIER_TYP,
dbo.MEMBRES.MBR_SUPPR
FROM dbo.MEMBRES
GROUP BY dbo.MEMBRES.MBR_PERE ;
SELECT
dbo.MEMBRES.MBR_ID,
dbo.MEMBRES.MBR_LIBELLE,
dbo.MEMBRES.MBR_PERE,
dbo.MEMBRES.MBR_HIER_TYP,
dbo.MEMBRES.MBR_SUPPR
FROM dbo.MEMBRES
GROUP BY dbo.MEMBRES.MBR_PERE ;
overpedro
Messages postés
29
Date d'inscription
mardi 5 décembre 2006
Statut
Membre
Dernière intervention
7 décembre 2006
>
Profil bloqué
6 déc. 2006 à 12:49
6 déc. 2006 à 12:49
Tu vas rire :-(
Ca donne ça => toujours même problème d'aggrégation :
Msg 8120, Niveau 16, État 1, Ligne 16
La colonne 'dbo.MEMBRES.MBR_ID' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
Ca donne ça => toujours même problème d'aggrégation :
Msg 8120, Niveau 16, État 1, Ligne 16
La colonne 'dbo.MEMBRES.MBR_ID' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
6 déc. 2006 à 11:18
Le résultat en colonne en gros ce serait comme ça :
GEN_ID|GEN_LIB|GEN_NUM|MBR_ID|MBR_LIBELLE|MBR_PERE| 2booleens en dernières colonnes
Il faudrait que les lignes soient triées par rapport à GEN_NUM (qui est un level) mais par "père et fils" => d'abord le Père (tête de treeview) puis son premier fils (level2) suivi des petits fils (level3) de ses propres fils (level4) puis le deuxième petit fils (level3) ses fils (level4) .... et ainsi de suite .... puis après le deuxième fils de la tête d'axe (level2), suivi de ses fils (level3) etc ....
En gors les lignes doivent correspondre à une arborescence père fils...
C'est un peu pénible :-(
Je sais pas si j'ai été clair ... peut-on mettre une pièce jointe (jpg) ce serait plus clair ?
Merci d'avance
6 déc. 2006 à 11:46
tu peux auusi grouper suivant "MBR_Pére",avec:
"SELECT.....GROUP BY MBR_Pére ORDER BYGEN_NUM".
voyons...
6 déc. 2006 à 11:59
Message d'erreur :
Msg 8120, Niveau 16, État 1, Ligne 3
La colonne 'dbo.GENERATIONS.GEN_ID' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
6 déc. 2006 à 12:22
6 déc. 2006 à 12:24