Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 13/01/2011 12:03:10
- Mathias77
- Membre
Ajouter une ligne total en fin de select
Bonjour !
Après de nombreuses heures de recherche sur les forums, je n'arrive toujours pas à faire ce que je veux faire : ajouter en fin de select une ligne total.
Voici ce que je veux faire :
Organisme Nombre
AA 12
BB 26
YY 30
TOTAL 68
J'utilise deux selects reliés par un union mais le union me panache les deux selects et ordonne par ordre alphabétique, si bien que j'obtiens :
Organisme Nombre
AA 12
BB 26
TOTAL 68
YY 30
Comment faire ?????
Je joins mon code (simplifié) :
(
select Organisme.nomOrganisme,
sum(NombreEmploye.nombre)
from NombreEmploye, Organisme
where NombreEmploye.idOrganisme=Organisme.idOrganisme
group by Organisme.nomOrganisme
)
union
(
select 'TOTAL' as TOTAL, sum(NombreEmploye.nombre)
from NombreEmploye
)
;
Merci pour votre aide !
Hors ligne
#2 13/01/2011 12:18:48
- gleu
- Administrateur
Re : Ajouter une ligne total en fin de select
SELECT
*
FROM (
(
select Organisme.nomOrganisme,
sum(NombreEmploye.nombre)
from NombreEmploye, Organisme
where NombreEmploye.idOrganisme=Organisme.idOrganisme
group by Organisme.nomOrganisme
)
union
(
select 'TOTAL' as TOTAL,
sum(NombreEmploye.nombre)
from NombreEmploye
)
) tmp
ORDER BY Organisme.nomOrganisme='total' asc, Organisme.nomOrganisme
;
Pas beau mais ça marche. Même si la présentation n'est pas vraiment le boulot du SGBD...
Guillaume.
Hors ligne
#3 13/01/2011 12:40:58
- Mathias77
- Membre
Re : Ajouter une ligne total en fin de select
Salut !
Merci pour ta réponse, mais ça ne marche pas...
J'ai cette erreur :
ERROR: missing FROM-clause entry for table "Organisme"
LINE 21: ORDER BY Organisme.nomOrganisme='total' asc, Org...
Hors ligne
#4 13/01/2011 12:48:15
- Mathias77
- Membre
Re : Ajouter une ligne total en fin de select
Mais je viens de tenter autre chose :
SELECT
*
FROM (
(
select Organisme.nomOrganisme,
sum(NombreEmploye.nombre) AS Countt
from NombreEmploye, Organisme
where NombreEmploye.idOrganisme=Organisme.idOrganisme
group by Organisme.nomOrganisme
)
union
(
select 'TOTAL' as TOTAL,
sum(NombreEmploye.nombre) AS Countt
from NombreEmploye
)
) tmp
ORDER BY Countt
;
Et ça marche !
Et oui, le TOTAL est supérieur à tous les autres SUM, donc il est mis en dernier.
A+ et merci !
Hors ligne
#5 13/01/2011 12:56:43
- gleu
- Administrateur
Re : Ajouter une ligne total en fin de select
Ah oui, j'ai oublié le renommage de la table. Voici la requête corrigée :
SELECT
*
FROM (
(
select Organisme.nomOrganisme,
sum(NombreEmploye.nombre)
from NombreEmploye, Organisme
where NombreEmploye.idOrganisme=Organisme.idOrganisme
group by Organisme.nomOrganisme
)
union
(
select 'TOTAL' as TOTAL,
sum(NombreEmploye.nombre)
from NombreEmploye
)
) tmp
ORDER BY tmp.nomOrganisme='total' asc, tmp.nomOrganisme
;
Guillaume.
Hors ligne
#6 13/01/2011 13:00:16
- Mathias77
- Membre
Re : Ajouter une ligne total en fin de select
hum, non ça ne marche toujours pas, j'ai :
ERROR: schema "tmp" does not exist
Hors ligne
#7 13/01/2011 13:08:27
- gleu
- Administrateur
Re : Ajouter une ligne total en fin de select
Ça marche sur le mien, en 9.0. Peut-être que vous utilisez une version différente ?
Guillaume.
Hors ligne
#8 13/01/2011 16:34:33
- meles
- Membre
Re : Ajouter une ligne total en fin de select
Bonjour, il me semble qu'avant la 9, il etait de bon ton de mettre le AS :
SELECT
*
FROM (
(
select Organisme.nomOrganisme,
sum(NombreEmploye.nombre)
from NombreEmploye, Organisme
where NombreEmploye.idOrganisme=Organisme.idOrganisme
group by Organisme.nomOrganisme
)
union
(
select 'TOTAL' as TOTAL,
sum(NombreEmploye.nombre)
from NombreEmploye
)
) AS tmp
ORDER BY tmp.nomOrganisme='total' asc, tmp.nomOrganisme;
sinon, toujours dans le crado:
SELECT
*
FROM (
(
select Organisme.nomOrganisme,
sum(NombreEmploye.nombre)
from NombreEmploye, Organisme
where NombreEmploye.idOrganisme=Organisme.idOrganisme
group by Organisme.nomOrganisme
)
union
(
select 'TOTAL' as TOTAL,
sum(NombreEmploye.nombre)
from NombreEmploye
)
) AS tmp
ORDER BY 2;
Cordialement
Hors ligne
#9 14/01/2011 12:14:23
- Mathias77
- Membre
Re : Ajouter une ligne total en fin de select
Salut !
Merci pour votre aide !
Le code utilisant AS ne marche pas, mais avec le "order by 2", ça marche.
Mais je me demande quelle est la signification de ce "order by 2" ?
A+
Hors ligne
#10 14/01/2011 13:04:54
- arthurr
- Membre
Re : Ajouter une ligne total en fin de select
2 : 2eme colonne retournée par le select
Exemple : select toto, titi, tata from foo order by 2 ==> va faire un order sur la colonne titi.
Dernière modification par arthurr (14/01/2011 13:09:46)
Hors ligne
#11 14/01/2011 13:05:34
- gleu
- Administrateur
Re : Ajouter une ligne total en fin de select
On demande d'ordonner par la colonne 2. On aurait pu aussi utiliser le nom de la deuxième colonne.
Guillaume.
Hors ligne
#12 14/01/2011 13:32:04
- Mathias77
- Membre
Re : Ajouter une ligne total en fin de select
ok merci à tous
Hors ligne
Pages : 1