3 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
slum-dunk, le mercredi 6 décembre 2006 à 11:36:59 1er essai:
remplace ton "order by MBR_Pére" par "order by GEN_NUM"
voyons.... Répondre à slum-dunk
4 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
overpedro, le mercredi 6 décembre 2006 à 11:44:10 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 ... Répondre à overpedro
9 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
slum-dunk, le mercredi 6 décembre 2006 à 12:26:06 3éme essai:
fait un" GROUP BY" seulement sur la table" member" suivant MBR_Pére.Et dis moi ce que ça donne.... Répondre à slum-dunk
10 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
overpedro, le mercredi 6 décembre 2006 à 12:31:59 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; Répondre à overpedro
11 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
slum-dunk, le mercredi 6 décembre 2006 à 12:40:12 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 ; Répondre à slum-dunk
12 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
overpedro, le mercredi 6 décembre 2006 à 12:49:44 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. Répondre à overpedro
13 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
slum-dunk, le mercredi 6 décembre 2006 à 12:55:04 en fait il vrai que quand on utilise "group by "la condition doit etre contenu dans "having":
voyons ça..
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
GROUP BY dbo.MEMBRES.MBR_PERE
having dbo.GENERATIONS.GEN_ID=dbo.MEMBRES.GEN_ID
AND dbo.GENERATIONS.AXE_ID='A1'
; Répondre à slum-dunk
14 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
overpedro, le mercredi 6 décembre 2006 à 12:58:01 Commence à être pénible leur fonction d'aggrégation ;-)) :
Msg 8121, Niveau 16, État 1, Ligne 17
La colonne 'dbo.GENERATIONS.GEN_ID' n'est pas valide dans la clause HAVING parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
Msg 8121, Niveau 16, État 1, Ligne 17
La colonne 'dbo.MEMBRES.GEN_ID' n'est pas valide dans la clause HAVING parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
Msg 8121, Niveau 16, État 1, Ligne 17
La colonne 'dbo.GENERATIONS.AXE_ID' n'est pas valide dans la clause HAVING parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
J'avais pensé à ce groupement, qu ieffectivement si on réussit à le faire marcher devrait fonctionner en le cumulant avec le tri par gen_num ... mais vraiment je vois pas .... Répondre à overpedro
15 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
slum-dunk, le mercredi 6 décembre 2006 à 13:04:52 dis tu utilise quel logiciel da base de données;mysql,oracle,sql server ou koi...? Répondre à slum-dunk
17 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
overpedro, le mercredi 6 décembre 2006 à 13:05:58 Je suis sur MS SQL Server 2005 ... Répondre à overpedro
18 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
slum-dunk, le mercredi 6 décembre 2006 à 13:24:57 Répondre à slum-dunk |
19 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
slum-dunk, le mercredi 6 décembre 2006 à 13:28:19 3éme essai :
SELECT
* FROM dbo.MEMBRES
GROUP BY dbo.MEMBRES.MBR_PERE ; Répondre à slum-dunk |
|
|
|
16 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
overpedro, le mercredi 6 décembre 2006 à 13:04:59 Je vais me chercher à manger ... je suis ed retour dans MAX 1/4 d'heure
En tout cas, merci de ton aide Slum-Dunk Répondre à overpedro |
20 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
overpedro, le mercredi 6 décembre 2006 à 13:35:40 Merci ;-) Bon ap' a toi aussi si tu déjeunes ...
Sinon ca a donné ça :
Msg 8120, Niveau 16, État 1, Ligne 17
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. Répondre à overpedro
21 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
slum-dunk, le mercredi 6 décembre 2006 à 13:56:47 4éme essai:
SELECT
DISTINCT
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_ID ; Répondre à slum-dunk
22 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
overpedro, le mercredi 6 décembre 2006 à 13:59:51 Je crois qu'on va pas s'en sortir de ce 'GROUP BY' :-(
Msg 8120, Niveau 16, État 1, Ligne 18
La colonne 'dbo.MEMBRES.MBR_LIBELLE' 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.
Toujours le même souçi ... Répondre à overpedro
23 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
slum-dunk, le mercredi 6 décembre 2006 à 14:09:57 en fait la fonction d'aggrégation qu'il te demande ce sont les fonctions de somme "SUM(nom_colonne)" ou de décompte "COUNT(nomcolonne)",etc...,mais ,on n'a pas besoin de ça ici.Mais cette requéte de "GROUP BY" sous Oracle ça serait bien déroulé.Mais on va penser à la 5éme methode... Répondre à slum-dunk |
24 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
overpedro, le mercredi 6 décembre 2006 à 14:19:46 Bah ouais, sur mon projet précédent chez Renault la B2D était Oracle, et il me semble bien avoir vu ça ... le GROUP BY
Je suis allé dans la doc en de SQL Server 2005 et pour Group By ils mettent ça :
Spécifie les groupes sur lesquels positionner les lignes de sortie. Si les fonctions d'agrégation sont comprises dans la clause SELECT <select list>, GROUP BY calcule une valeur de résumé pour chaque groupe. Lorsque GROUP BY est spécifiée, vous devez inclure dans la liste GROUP BY chaque colonne de toute expression de non-agrégation figurant dans la liste de sélection, ou l'expression GROUP BY doit correspondre exactement à l'expression figurant dans la liste de sélection.
Un exemple :
L'exemple suivant extrait le nombre d'employés pour chaque City de la table Address en conjonction avec la table Employee.
SELECT a.City, COUNT(e.AddressID) EmployeeCount
FROM HumanResources.Employee e
INNER JOIN Person.Address a
ON e.AddressID = a.AddressID
GROUP BY a.City
ORDER BY a.City ; Répondre à overpedro |
26 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
slum-dunk, le mercredi 6 décembre 2006 à 14:34:21 Pour l'exemple que tu viens de me donner avec "GROUP BY" eske tu a essayé de l'implementer dans notre cas? Répondre à slum-dunk |
28 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
overpedro, le mercredi 6 décembre 2006 à 14:53:34 Bah en fait, je vois pas trop comment l'adapter à notre cas => mon select est un peu plus complexe et je vois pas ou caler la fonction d'agrégation (ici COUNT) !!!
Mais je suis pas mal une bille ... ;-( Répondre à overpedro |
25 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
slum-dunk, le mercredi 6 décembre 2006 à 14:22:58 Maintenant ce qu'on va faire c'est :
-Reprendre ton premier essai tout au début en exploitant les résultats.
-Ensuite ,ce que tu va faire c'est m'indiquer tous les éléments qui manquent ,tous les éléments qui ne doivent pas apparaitre,et comment les bons éléments doivent étre présenté dans l'odre des colonnes. Répondre à slum-dunk |
27 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
overpedro, le mercredi 6 décembre 2006 à 14:49:43 OK ... alors dans les résultats de la première requête :
- on obtient bien toutes les colonnes souhaitées ( c moche comme présentation donc on voit pas bien, mais la 6ème colonne c'est celle du père) :
En fait, je voudrais donc avoir :
G1A1 |Axe_T|1(c GEN_NUM, le Level quoi )|MB1|AXE_TARIF|NULL(c la haut du treeviw, pas de père)|0|0
G2A1|Hier_T|2|MB22|Hier_P|MB1(c l'ID du Père donc)|0|0
maintenant les fils et les petites fils de MB22(membre de level2)
G3A1|BU_T|3|MB2|BU_TK|MB22|0|1
G4A1|Gamme_T|4|MBN|Gam_TDR|MB2|0|1
G5A1|Tarif|5|MBB|Tarif_B|MBN|0|1
G5A1|Tarif|5|MBT4|K7_Tarif|MBN|0|1
G4A1|Gamme_T|4|MBS3|Gam_T5|MB2|0|1
G5A1|Tarif|5|MBBB|TrfKK|MBS3|0|1
G3A1|BU_T|3|MB2B|BU_TF|MB22|0|1
G4A1|Gamme_T|4|MBG3|Gam_T2|MB2B|0|1
G5A1|Tarif|5|MBT5|Trf_P|MBG3|0|1
G4A1|Gamme_T|4|MBT3|Gam_T8|MB2B|0|1
G5A1|Tarif|5|MB4Z|Tarif_K7|MBT3|0|1
G5A1|Tarif|5|MB01|Trif_H|MBT3|0|1
G3A1|BU_T|3|MB2E|BU_TC|MB22|0|1
G4A1|Gamme_T|4|MBH|PB_Gam|MB2E|0|1
G5A1|Tarif|5|MB5RX|Tarif_BB|MBH|0|1
Voilà ce que je veux comme agencement de ligne, c vraiement assez balaise .... Répondre à overpedro |
29 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
- Signaler ce message aux modérateurs
|
slum-dunk, le mercredi 6 décembre 2006 à 15:09:22 tu sais comme je ne maitrise pas suffisament ton systéme d'informations,dis moi la ou les colonnes qui n'ont pas été trié,parcequ'une opération de tri ne doit pas engendrer autant de réflexion.
(D'un autre coté c'est bien parfois les petits détails comme celui-là qui nous posent le maximum de difficultés)
Mais c'est des connaissances de plus! Répondre à slum-dunk |
31 1Ce message vous semble utile, votez !- Ce message ne vous semble pas utile, votez !
|
|
|
|
|
|
|
|
|
|
|