désolé mais ça marche pas on ne peut pas mettre de order by dans un select
d'un select
"bruno reiter [MVP]" <remove.this! a écrit dans le
de news:
> select A.au_id, A.au_lname, 'prems'
> from
> (
> select top 10 * from authors
> order by au_lname
> ) as a
> union all
> select A.au_id, A.au_lname,'derch'
> from
> (
> select top 10 * from authors
> order by au_lname desc
> ) as a
> order by 2
>
> br
>
> "jeorme" wrote in message
> news:
> > Bonjour à tous
> >
> > Question pour les pro de SQL:
> >
> > J'ai 50 élèves avec leur moyenne, je veux une requete dans laquelle
> les
> > 10 meilleurs et les dix plus mauvais.
> >
> > Ex:
> >
> > select top 10 nom, moyenne
> > from notes
> > order by moyenne desc
> >
> >
> >
> > select top 10 nom, moyenne
> > from notes
> > order by moyenne
> >
> > Si je m'ai une union ça foire à cause des order by.
> >
> > Que faire ?
> >
> >
>
>
désolé mais ça marche pas on ne peut pas mettre de order by dans un select
d'un select
"bruno reiter [MVP]" <remove.this!.br33@bol.com.br> a écrit dans le
de news: edmv0TrCFHA.1432@tk2msftngp13.phx.gbl...
> select A.au_id, A.au_lname, 'prems'
> from
> (
> select top 10 * from authors
> order by au_lname
> ) as a
> union all
> select A.au_id, A.au_lname,'derch'
> from
> (
> select top 10 * from authors
> order by au_lname desc
> ) as a
> order by 2
>
> br
>
> "jeorme" <jerome.boutin@filtrauto.com> wrote in message
> news:OT3jcXhCFHA.560@TK2MSFTNGP15.phx.gbl...
> > Bonjour à tous
> >
> > Question pour les pro de SQL:
> >
> > J'ai 50 élèves avec leur moyenne, je veux une requete dans laquelle
> les
> > 10 meilleurs et les dix plus mauvais.
> >
> > Ex:
> >
> > select top 10 nom, moyenne
> > from notes
> > order by moyenne desc
> >
> >
> >
> > select top 10 nom, moyenne
> > from notes
> > order by moyenne
> >
> > Si je m'ai une union ça foire à cause des order by.
> >
> > Que faire ?
> >
> >
>
>
désolé mais ça marche pas on ne peut pas mettre de order by dans un select
d'un select
"bruno reiter [MVP]" <remove.this! a écrit dans le
de news:
> select A.au_id, A.au_lname, 'prems'
> from
> (
> select top 10 * from authors
> order by au_lname
> ) as a
> union all
> select A.au_id, A.au_lname,'derch'
> from
> (
> select top 10 * from authors
> order by au_lname desc
> ) as a
> order by 2
>
> br
>
> "jeorme" wrote in message
> news:
> > Bonjour à tous
> >
> > Question pour les pro de SQL:
> >
> > J'ai 50 élèves avec leur moyenne, je veux une requete dans laquelle
> les
> > 10 meilleurs et les dix plus mauvais.
> >
> > Ex:
> >
> > select top 10 nom, moyenne
> > from notes
> > order by moyenne desc
> >
> >
> >
> > select top 10 nom, moyenne
> > from notes
> > order by moyenne
> >
> > Si je m'ai une union ça foire à cause des order by.
> >
> > Que faire ?
> >
> >
>
>
désolé mais ça marche pas on ne peut pas mettre de order by dans un select
d'un select
"bruno reiter [MVP]" <remove.this! a écrit dans le
de news:
> select A.au_id, A.au_lname, 'prems'
> from
> (
> select top 10 * from authors
> order by au_lname
> ) as a
> union all
> select A.au_id, A.au_lname,'derch'
> from
> (
> select top 10 * from authors
> order by au_lname desc
> ) as a
> order by 2
>
> br
>
> "jeorme" wrote in message
> news:
> > Bonjour à tous
> >
> > Question pour les pro de SQL:
> >
> > J'ai 50 élèves avec leur moyenne, je veux une requete dans laquelle
> les
> > 10 meilleurs et les dix plus mauvais.
> >
> > Ex:
> >
> > select top 10 nom, moyenne
> > from notes
> > order by moyenne desc
> >
> >
> >
> > select top 10 nom, moyenne
> > from notes
> > order by moyenne
> >
> > Si je m'ai une union ça foire à cause des order by.
> >
> > Que faire ?
> >
> >
>
>
désolé mais ça marche pas on ne peut pas mettre de order by dans un select
d'un select
"bruno reiter [MVP]" <remove.this!.br33@bol.com.br> a écrit dans le
de news: edmv0TrCFHA.1432@tk2msftngp13.phx.gbl...
> select A.au_id, A.au_lname, 'prems'
> from
> (
> select top 10 * from authors
> order by au_lname
> ) as a
> union all
> select A.au_id, A.au_lname,'derch'
> from
> (
> select top 10 * from authors
> order by au_lname desc
> ) as a
> order by 2
>
> br
>
> "jeorme" <jerome.boutin@filtrauto.com> wrote in message
> news:OT3jcXhCFHA.560@TK2MSFTNGP15.phx.gbl...
> > Bonjour à tous
> >
> > Question pour les pro de SQL:
> >
> > J'ai 50 élèves avec leur moyenne, je veux une requete dans laquelle
> les
> > 10 meilleurs et les dix plus mauvais.
> >
> > Ex:
> >
> > select top 10 nom, moyenne
> > from notes
> > order by moyenne desc
> >
> >
> >
> > select top 10 nom, moyenne
> > from notes
> > order by moyenne
> >
> > Si je m'ai une union ça foire à cause des order by.
> >
> > Que faire ?
> >
> >
>
>
désolé mais ça marche pas on ne peut pas mettre de order by dans un select
d'un select
"bruno reiter [MVP]" <remove.this! a écrit dans le
de news:
> select A.au_id, A.au_lname, 'prems'
> from
> (
> select top 10 * from authors
> order by au_lname
> ) as a
> union all
> select A.au_id, A.au_lname,'derch'
> from
> (
> select top 10 * from authors
> order by au_lname desc
> ) as a
> order by 2
>
> br
>
> "jeorme" wrote in message
> news:
> > Bonjour à tous
> >
> > Question pour les pro de SQL:
> >
> > J'ai 50 élèves avec leur moyenne, je veux une requete dans laquelle
> les
> > 10 meilleurs et les dix plus mauvais.
> >
> > Ex:
> >
> > select top 10 nom, moyenne
> > from notes
> > order by moyenne desc
> >
> >
> >
> > select top 10 nom, moyenne
> > from notes
> > order by moyenne
> >
> > Si je m'ai une union ça foire à cause des order by.
> >
> > Que faire ?
> >
> >
>
>
100% d'accord avec toi, la requête ne fonctionne pas car il n'est pas
possible de faire appariatre la même colonne 2 fois dans l'order by.
De plus les meilleurs possèdent une moyenne élevée, pour obtebir les 10
meilleurs il faut trier les moyennes en ordre décroissant DESC, et pour les
plus mauvais il faut trier par ordre croissant
"Med Bouchenafa" a écrit :Je ne pense que la solution de Fred puisse marcher
Sinon Jeorme n'aurait pas poser la question !!!
Comme l'a bien fait remarquer Evariste, l'ORDER BY porte sur l'ensemble du
jeu de résultat après le regroupement par Union
Le passage par une table temporaire est une solution tout à fait acceptable.
Ce que tu as proposé fonctionne aussi à condition de lui rajouter un ORDER
BY sur l'ensemble
Attention à la gestion des doublons (deux elèves ayant la même note)
--
Bien cordialement
Med Bouchenafa
"Philippe T [MS]" a écrit dans le message de
news: %Bonjour,
Oui, cela marche aussi !!! :-)
Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france
"Fred BROUARD" wrote in message
news:select top 10 nom, moyenne, '1 : les meilleurs' AS NOTATION
from notes
UNION
select top 10 nom, moyenne, '2 : les plus mauvais'
from notes
order by NOTATION ASC, moyenne DESC
A +
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
jeorme a écrit:Bonjour à tous
Question pour les pro de SQL:
J'ai 50 élèves avec leur moyenne, je veux une requete dans laquelle
j'ai
les10 meilleurs et les dix plus mauvais.
Ex:
select top 10 nom, moyenne
from notes
order by moyenne desc
select top 10 nom, moyenne
from notes
order by moyenne
Si je m'ai une union ça foire à cause des order by.
Que faire ?
100% d'accord avec toi, la requête ne fonctionne pas car il n'est pas
possible de faire appariatre la même colonne 2 fois dans l'order by.
De plus les meilleurs possèdent une moyenne élevée, pour obtebir les 10
meilleurs il faut trier les moyennes en ordre décroissant DESC, et pour les
plus mauvais il faut trier par ordre croissant
"Med Bouchenafa" a écrit :
Je ne pense que la solution de Fred puisse marcher
Sinon Jeorme n'aurait pas poser la question !!!
Comme l'a bien fait remarquer Evariste, l'ORDER BY porte sur l'ensemble du
jeu de résultat après le regroupement par Union
Le passage par une table temporaire est une solution tout à fait acceptable.
Ce que tu as proposé fonctionne aussi à condition de lui rajouter un ORDER
BY sur l'ensemble
Attention à la gestion des doublons (deux elèves ayant la même note)
--
Bien cordialement
Med Bouchenafa
"Philippe T [MS]" <ptrotin@online.microsoft.com> a écrit dans le message de
news: %23uHl1MkCFHA.4052@TK2MSFTNGP15.phx.gbl...
Bonjour,
Oui, cela marche aussi !!! :-)
Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france
"Fred BROUARD" <brouardf@club-internet.fr> wrote in message
news:4202993B.5040209@club-internet.fr...
select top 10 nom, moyenne, '1 : les meilleurs' AS NOTATION
from notes
UNION
select top 10 nom, moyenne, '2 : les plus mauvais'
from notes
order by NOTATION ASC, moyenne DESC
A +
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
jeorme a écrit:
Bonjour à tous
Question pour les pro de SQL:
J'ai 50 élèves avec leur moyenne, je veux une requete dans laquelle
j'ai
les
10 meilleurs et les dix plus mauvais.
Ex:
select top 10 nom, moyenne
from notes
order by moyenne desc
select top 10 nom, moyenne
from notes
order by moyenne
Si je m'ai une union ça foire à cause des order by.
Que faire ?
100% d'accord avec toi, la requête ne fonctionne pas car il n'est pas
possible de faire appariatre la même colonne 2 fois dans l'order by.
De plus les meilleurs possèdent une moyenne élevée, pour obtebir les 10
meilleurs il faut trier les moyennes en ordre décroissant DESC, et pour les
plus mauvais il faut trier par ordre croissant
"Med Bouchenafa" a écrit :Je ne pense que la solution de Fred puisse marcher
Sinon Jeorme n'aurait pas poser la question !!!
Comme l'a bien fait remarquer Evariste, l'ORDER BY porte sur l'ensemble du
jeu de résultat après le regroupement par Union
Le passage par une table temporaire est une solution tout à fait acceptable.
Ce que tu as proposé fonctionne aussi à condition de lui rajouter un ORDER
BY sur l'ensemble
Attention à la gestion des doublons (deux elèves ayant la même note)
--
Bien cordialement
Med Bouchenafa
"Philippe T [MS]" a écrit dans le message de
news: %Bonjour,
Oui, cela marche aussi !!! :-)
Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france
"Fred BROUARD" wrote in message
news:select top 10 nom, moyenne, '1 : les meilleurs' AS NOTATION
from notes
UNION
select top 10 nom, moyenne, '2 : les plus mauvais'
from notes
order by NOTATION ASC, moyenne DESC
A +
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
jeorme a écrit:Bonjour à tous
Question pour les pro de SQL:
J'ai 50 élèves avec leur moyenne, je veux une requete dans laquelle
j'ai
les10 meilleurs et les dix plus mauvais.
Ex:
select top 10 nom, moyenne
from notes
order by moyenne desc
select top 10 nom, moyenne
from notes
order by moyenne
Si je m'ai une union ça foire à cause des order by.
Que faire ?
100% d'accord avec toi, la requête ne fonctionne pas car il n'est pas
possible de faire appariatre la même colonne 2 fois dans l'order by.
De plus les meilleurs possèdent une moyenne élevée, pour obtebir les 10
meilleurs il faut trier les moyennes en ordre décroissant DESC, et pour les
plus mauvais il faut trier par ordre croissant
"Med Bouchenafa" a écrit :Je ne pense que la solution de Fred puisse marcher
Sinon Jeorme n'aurait pas poser la question !!!
Comme l'a bien fait remarquer Evariste, l'ORDER BY porte sur l'ensemble du
jeu de résultat après le regroupement par Union
Le passage par une table temporaire est une solution tout à fait acceptable.
Ce que tu as proposé fonctionne aussi à condition de lui rajouter un ORDER
BY sur l'ensemble
Attention à la gestion des doublons (deux elèves ayant la même note)
--
Bien cordialement
Med Bouchenafa
"Philippe T [MS]" a écrit dans le message de
news: %Bonjour,
Oui, cela marche aussi !!! :-)
Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france
"Fred BROUARD" wrote in message
news:select top 10 nom, moyenne, '1 : les meilleurs' AS NOTATION
from notes
UNION
select top 10 nom, moyenne, '2 : les plus mauvais'
from notes
order by NOTATION ASC, moyenne DESC
A +
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
jeorme a écrit:Bonjour à tous
Question pour les pro de SQL:
J'ai 50 élèves avec leur moyenne, je veux une requete dans laquelle
j'ai
les10 meilleurs et les dix plus mauvais.
Ex:
select top 10 nom, moyenne
from notes
order by moyenne desc
select top 10 nom, moyenne
from notes
order by moyenne
Si je m'ai une union ça foire à cause des order by.
Que faire ?
100% d'accord avec toi, la requête ne fonctionne pas car il n'est pas
possible de faire appariatre la même colonne 2 fois dans l'order by.
De plus les meilleurs possèdent une moyenne élevée, pour obtebir les 10
meilleurs il faut trier les moyennes en ordre décroissant DESC, et pour les
plus mauvais il faut trier par ordre croissant
"Med Bouchenafa" a écrit :
Je ne pense que la solution de Fred puisse marcher
Sinon Jeorme n'aurait pas poser la question !!!
Comme l'a bien fait remarquer Evariste, l'ORDER BY porte sur l'ensemble du
jeu de résultat après le regroupement par Union
Le passage par une table temporaire est une solution tout à fait acceptable.
Ce que tu as proposé fonctionne aussi à condition de lui rajouter un ORDER
BY sur l'ensemble
Attention à la gestion des doublons (deux elèves ayant la même note)
--
Bien cordialement
Med Bouchenafa
"Philippe T [MS]" <ptrotin@online.microsoft.com> a écrit dans le message de
news: %23uHl1MkCFHA.4052@TK2MSFTNGP15.phx.gbl...
Bonjour,
Oui, cela marche aussi !!! :-)
Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france
"Fred BROUARD" <brouardf@club-internet.fr> wrote in message
news:4202993B.5040209@club-internet.fr...
select top 10 nom, moyenne, '1 : les meilleurs' AS NOTATION
from notes
UNION
select top 10 nom, moyenne, '2 : les plus mauvais'
from notes
order by NOTATION ASC, moyenne DESC
A +
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
jeorme a écrit:
Bonjour à tous
Question pour les pro de SQL:
J'ai 50 élèves avec leur moyenne, je veux une requete dans laquelle
j'ai
les
10 meilleurs et les dix plus mauvais.
Ex:
select top 10 nom, moyenne
from notes
order by moyenne desc
select top 10 nom, moyenne
from notes
order by moyenne
Si je m'ai une union ça foire à cause des order by.
Que faire ?
100% d'accord avec toi, la requête ne fonctionne pas car il n'est pas
possible de faire appariatre la même colonne 2 fois dans l'order by.
De plus les meilleurs possèdent une moyenne élevée, pour obtebir les 10
meilleurs il faut trier les moyennes en ordre décroissant DESC, et pour les
plus mauvais il faut trier par ordre croissant
"Med Bouchenafa" a écrit :Je ne pense que la solution de Fred puisse marcher
Sinon Jeorme n'aurait pas poser la question !!!
Comme l'a bien fait remarquer Evariste, l'ORDER BY porte sur l'ensemble du
jeu de résultat après le regroupement par Union
Le passage par une table temporaire est une solution tout à fait acceptable.
Ce que tu as proposé fonctionne aussi à condition de lui rajouter un ORDER
BY sur l'ensemble
Attention à la gestion des doublons (deux elèves ayant la même note)
--
Bien cordialement
Med Bouchenafa
"Philippe T [MS]" a écrit dans le message de
news: %Bonjour,
Oui, cela marche aussi !!! :-)
Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france
"Fred BROUARD" wrote in message
news:select top 10 nom, moyenne, '1 : les meilleurs' AS NOTATION
from notes
UNION
select top 10 nom, moyenne, '2 : les plus mauvais'
from notes
order by NOTATION ASC, moyenne DESC
A +
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
jeorme a écrit:Bonjour à tous
Question pour les pro de SQL:
J'ai 50 élèves avec leur moyenne, je veux une requete dans laquelle
j'ai
les10 meilleurs et les dix plus mauvais.
Ex:
select top 10 nom, moyenne
from notes
order by moyenne desc
select top 10 nom, moyenne
from notes
order by moyenne
Si je m'ai une union ça foire à cause des order by.
Que faire ?
en fait comme il n'y que la solution des tables tempo qui permet de
dans cette ordre , j'ai fait différement.
J'ai pris la solution de philippe qui me remonte les 10 meilleurs et les
plus maivais dans n'importe quel ordre. J'envoie ça dans ma pages ASP un
tableau qu'on trie et j'affiche et ça roule.
Merci à tous pour votre aide.
PS: je pensais que ce problème serait simple à gérer par du sql mais comme
quoi !!!
"Med Bouchenafa" a écrit dans le message de news:
#
> Je ne pense que la solution de Fred puisse marcher
> Sinon Jeorme n'aurait pas poser la question !!!
> Comme l'a bien fait remarquer Evariste, l'ORDER BY porte sur l'ensemble
> jeu de résultat après le regroupement par Union
> Le passage par une table temporaire est une solution tout à fait
acceptable.
> Ce que tu as proposé fonctionne aussi à condition de lui rajouter un
> BY sur l'ensemble
> Attention à la gestion des doublons (deux elèves ayant la même note)
>
> --
> Bien cordialement
> Med Bouchenafa
>
> "Philippe T [MS]" a écrit dans le message
de
> news: %
> > Bonjour,
> >
> > Oui, cela marche aussi !!! :-)
> >
> > Phil.
> > ________________________________________________________
> > Philippe TROTIN http://blogs.msdn.com/ptrotin
> > Microsoft Services France http://www.microsoft.com/france
> >
> > "Fred BROUARD" wrote in message
> > news:
> >> select top 10 nom, moyenne, '1 : les meilleurs' AS NOTATION
> >> from notes
> >> UNION
> >> select top 10 nom, moyenne, '2 : les plus mauvais'
> >> from notes
> >> order by NOTATION ASC, moyenne DESC
> >>
> >> A +
> >>
> >> --
> >> Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi,
> >> Livre SQL - col. Référence :
> >> Le site du SQL, pour débutants et pros :
> >> ************************ www.datasapiens.com
> >>
> >> jeorme a écrit:
> >> > Bonjour à tous
> >> >
> >> > Question pour les pro de SQL:
> >> >
> >> > J'ai 50 élèves avec leur moyenne, je veux une requete dans laquelle
> >> > j'ai
> > les
> >> > 10 meilleurs et les dix plus mauvais.
> >> >
> >> > Ex:
> >> >
> >> > select top 10 nom, moyenne
> >> > from notes
> >> > order by moyenne desc
> >> >
> >> >
> >> >
> >> > select top 10 nom, moyenne
> >> > from notes
> >> > order by moyenne
> >> >
> >> > Si je m'ai une union ça foire à cause des order by.
> >> >
> >> > Que faire ?
> >> >
> >> >
> >>
> >>
> >
> >
>
>
en fait comme il n'y que la solution des tables tempo qui permet de
dans cette ordre , j'ai fait différement.
J'ai pris la solution de philippe qui me remonte les 10 meilleurs et les
plus maivais dans n'importe quel ordre. J'envoie ça dans ma pages ASP un
tableau qu'on trie et j'affiche et ça roule.
Merci à tous pour votre aide.
PS: je pensais que ce problème serait simple à gérer par du sql mais comme
quoi !!!
"Med Bouchenafa" <com.hotmail@bouchenafa> a écrit dans le message de news:
#UqOzspCFHA.2608@TK2MSFTNGP10.phx.gbl...
> Je ne pense que la solution de Fred puisse marcher
> Sinon Jeorme n'aurait pas poser la question !!!
> Comme l'a bien fait remarquer Evariste, l'ORDER BY porte sur l'ensemble
> jeu de résultat après le regroupement par Union
> Le passage par une table temporaire est une solution tout à fait
acceptable.
> Ce que tu as proposé fonctionne aussi à condition de lui rajouter un
> BY sur l'ensemble
> Attention à la gestion des doublons (deux elèves ayant la même note)
>
> --
> Bien cordialement
> Med Bouchenafa
>
> "Philippe T [MS]" <ptrotin@online.microsoft.com> a écrit dans le message
de
> news: %23uHl1MkCFHA.4052@TK2MSFTNGP15.phx.gbl...
> > Bonjour,
> >
> > Oui, cela marche aussi !!! :-)
> >
> > Phil.
> > ________________________________________________________
> > Philippe TROTIN http://blogs.msdn.com/ptrotin
> > Microsoft Services France http://www.microsoft.com/france
> >
> > "Fred BROUARD" <brouardf@club-internet.fr> wrote in message
> > news:4202993B.5040209@club-internet.fr...
> >> select top 10 nom, moyenne, '1 : les meilleurs' AS NOTATION
> >> from notes
> >> UNION
> >> select top 10 nom, moyenne, '2 : les plus mauvais'
> >> from notes
> >> order by NOTATION ASC, moyenne DESC
> >>
> >> A +
> >>
> >> --
> >> Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi,
> >> Livre SQL - col. Référence :
> >> Le site du SQL, pour débutants et pros :
> >> ************************ www.datasapiens.com
> >>
> >> jeorme a écrit:
> >> > Bonjour à tous
> >> >
> >> > Question pour les pro de SQL:
> >> >
> >> > J'ai 50 élèves avec leur moyenne, je veux une requete dans laquelle
> >> > j'ai
> > les
> >> > 10 meilleurs et les dix plus mauvais.
> >> >
> >> > Ex:
> >> >
> >> > select top 10 nom, moyenne
> >> > from notes
> >> > order by moyenne desc
> >> >
> >> >
> >> >
> >> > select top 10 nom, moyenne
> >> > from notes
> >> > order by moyenne
> >> >
> >> > Si je m'ai une union ça foire à cause des order by.
> >> >
> >> > Que faire ?
> >> >
> >> >
> >>
> >>
> >
> >
>
>
en fait comme il n'y que la solution des tables tempo qui permet de
dans cette ordre , j'ai fait différement.
J'ai pris la solution de philippe qui me remonte les 10 meilleurs et les
plus maivais dans n'importe quel ordre. J'envoie ça dans ma pages ASP un
tableau qu'on trie et j'affiche et ça roule.
Merci à tous pour votre aide.
PS: je pensais que ce problème serait simple à gérer par du sql mais comme
quoi !!!
"Med Bouchenafa" a écrit dans le message de news:
#
> Je ne pense que la solution de Fred puisse marcher
> Sinon Jeorme n'aurait pas poser la question !!!
> Comme l'a bien fait remarquer Evariste, l'ORDER BY porte sur l'ensemble
> jeu de résultat après le regroupement par Union
> Le passage par une table temporaire est une solution tout à fait
acceptable.
> Ce que tu as proposé fonctionne aussi à condition de lui rajouter un
> BY sur l'ensemble
> Attention à la gestion des doublons (deux elèves ayant la même note)
>
> --
> Bien cordialement
> Med Bouchenafa
>
> "Philippe T [MS]" a écrit dans le message
de
> news: %
> > Bonjour,
> >
> > Oui, cela marche aussi !!! :-)
> >
> > Phil.
> > ________________________________________________________
> > Philippe TROTIN http://blogs.msdn.com/ptrotin
> > Microsoft Services France http://www.microsoft.com/france
> >
> > "Fred BROUARD" wrote in message
> > news:
> >> select top 10 nom, moyenne, '1 : les meilleurs' AS NOTATION
> >> from notes
> >> UNION
> >> select top 10 nom, moyenne, '2 : les plus mauvais'
> >> from notes
> >> order by NOTATION ASC, moyenne DESC
> >>
> >> A +
> >>
> >> --
> >> Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi,
> >> Livre SQL - col. Référence :
> >> Le site du SQL, pour débutants et pros :
> >> ************************ www.datasapiens.com
> >>
> >> jeorme a écrit:
> >> > Bonjour à tous
> >> >
> >> > Question pour les pro de SQL:
> >> >
> >> > J'ai 50 élèves avec leur moyenne, je veux une requete dans laquelle
> >> > j'ai
> > les
> >> > 10 meilleurs et les dix plus mauvais.
> >> >
> >> > Ex:
> >> >
> >> > select top 10 nom, moyenne
> >> > from notes
> >> > order by moyenne desc
> >> >
> >> >
> >> >
> >> > select top 10 nom, moyenne
> >> > from notes
> >> > order by moyenne
> >> >
> >> > Si je m'ai une union ça foire à cause des order by.
> >> >
> >> > Que faire ?
> >> >
> >> >
> >>
> >>
> >
> >
>
>
Si je n'avais pas testé, j'aurais dit : je n'ai pas essayé!!!
et toi tu as testé? quelle version?
br
"jeorme" wrote in message
news:#
> désolé mais ça marche pas on ne peut pas mettre de order by dans un
> d'un select
> "bruno reiter [MVP]" <remove.this! a écrit dans le
message
> de news:
> > select A.au_id, A.au_lname, 'prems'
> > from
> > (
> > select top 10 * from authors
> > order by au_lname
> > ) as a
> > union all
> > select A.au_id, A.au_lname,'derch'
> > from
> > (
> > select top 10 * from authors
> > order by au_lname desc
> > ) as a
> > order by 2
> >
> > br
> >
> > "jeorme" wrote in message
> > news:
> > > Bonjour à tous
> > >
> > > Question pour les pro de SQL:
> > >
> > > J'ai 50 élèves avec leur moyenne, je veux une requete dans laquelle
j'ai
> > les
> > > 10 meilleurs et les dix plus mauvais.
> > >
> > > Ex:
> > >
> > > select top 10 nom, moyenne
> > > from notes
> > > order by moyenne desc
> > >
> > >
> > >
> > > select top 10 nom, moyenne
> > > from notes
> > > order by moyenne
> > >
> > > Si je m'ai une union ça foire à cause des order by.
> > >
> > > Que faire ?
> > >
> > >
> >
> >
>
>
Si je n'avais pas testé, j'aurais dit : je n'ai pas essayé!!!
et toi tu as testé? quelle version?
br
"jeorme" <jerome.boutin@filtrauto.com> wrote in message
news:#8ZThzrCFHA.3120@TK2MSFTNGP12.phx.gbl...
> désolé mais ça marche pas on ne peut pas mettre de order by dans un
> d'un select
> "bruno reiter [MVP]" <remove.this!.br33@bol.com.br> a écrit dans le
message
> de news: edmv0TrCFHA.1432@tk2msftngp13.phx.gbl...
> > select A.au_id, A.au_lname, 'prems'
> > from
> > (
> > select top 10 * from authors
> > order by au_lname
> > ) as a
> > union all
> > select A.au_id, A.au_lname,'derch'
> > from
> > (
> > select top 10 * from authors
> > order by au_lname desc
> > ) as a
> > order by 2
> >
> > br
> >
> > "jeorme" <jerome.boutin@filtrauto.com> wrote in message
> > news:OT3jcXhCFHA.560@TK2MSFTNGP15.phx.gbl...
> > > Bonjour à tous
> > >
> > > Question pour les pro de SQL:
> > >
> > > J'ai 50 élèves avec leur moyenne, je veux une requete dans laquelle
j'ai
> > les
> > > 10 meilleurs et les dix plus mauvais.
> > >
> > > Ex:
> > >
> > > select top 10 nom, moyenne
> > > from notes
> > > order by moyenne desc
> > >
> > >
> > >
> > > select top 10 nom, moyenne
> > > from notes
> > > order by moyenne
> > >
> > > Si je m'ai une union ça foire à cause des order by.
> > >
> > > Que faire ?
> > >
> > >
> >
> >
>
>
Si je n'avais pas testé, j'aurais dit : je n'ai pas essayé!!!
et toi tu as testé? quelle version?
br
"jeorme" wrote in message
news:#
> désolé mais ça marche pas on ne peut pas mettre de order by dans un
> d'un select
> "bruno reiter [MVP]" <remove.this! a écrit dans le
message
> de news:
> > select A.au_id, A.au_lname, 'prems'
> > from
> > (
> > select top 10 * from authors
> > order by au_lname
> > ) as a
> > union all
> > select A.au_id, A.au_lname,'derch'
> > from
> > (
> > select top 10 * from authors
> > order by au_lname desc
> > ) as a
> > order by 2
> >
> > br
> >
> > "jeorme" wrote in message
> > news:
> > > Bonjour à tous
> > >
> > > Question pour les pro de SQL:
> > >
> > > J'ai 50 élèves avec leur moyenne, je veux une requete dans laquelle
j'ai
> > les
> > > 10 meilleurs et les dix plus mauvais.
> > >
> > > Ex:
> > >
> > > select top 10 nom, moyenne
> > > from notes
> > > order by moyenne desc
> > >
> > >
> > >
> > > select top 10 nom, moyenne
> > > from notes
> > > order by moyenne
> > >
> > > Si je m'ai une union ça foire à cause des order by.
> > >
> > > Que faire ?
> > >
> > >
> >
> >
>
>
Voici la requête sans sous requêtes dans la clause from, sans clause TOP
table temporaire :
CREATE TABLE NOTES (nom VARCHAR(8), moyenne FLOAT)
INSERT INTO NOTES VALUES ('Paul', 20)
INSERT INTO NOTES VALUES ('Pierre', 15)
INSERT INTO NOTES VALUES ('Jean', 0)
INSERT INTO NOTES VALUES ('Jacques', 3)
INSERT INTO NOTES VALUES ('Patrick', 18)
INSERT INTO NOTES VALUES ('Peter', 18)
INSERT INTO NOTES VALUES ('John', 5)
INSERT INTO NOTES VALUES ('Julien', 2)
select N1.nom, N1.moyenne, 'MEILLEURS' AS CLASSEMENT,
(SELECT MIN(moyenne) FROM NOTES) - N1.moyenne AS TRI
from NOTES N1
LEFT OUTER JOIN NOTES N2
ON N1.moyenne <= N2.moyenne
AND N1.nom <> N2.nom
GROUP BY N1.nom, N1.moyenne
HAVING COUNT(N2.nom) < 3
UNION
select N1.nom, N1.moyenne, 'MOINS BON' AS CLASSEMENT,
ABS((SELECT MIN(moyenne) FROM NOTES) - N1.moyenne) AS TRI
from NOTES N1
LEFT OUTER JOIN NOTES N2
ON N1.moyenne >= N2.moyenne
AND N1.nom <> N2.nom
GROUP BY N1.nom, N1.moyenne
HAVING COUNT(N2.nom) < 3
ORDER BY TRI
je l'ai volontairement limitée à 3 : HAVING COUNT(N2.nom) < 3
pour voir si cela marchais. Vous devez l'adapter pour 10.
Il y a peu de problèmes que SQL ne puisse résoudre par une requête !
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
jgabillaud a écrit:
> 100% d'accord avec toi, la requête ne fonctionne pas car il n'est pas
> possible de faire appariatre la même colonne 2 fois dans l'order by.
> De plus les meilleurs possèdent une moyenne élevée, pour obtebir les 10
> meilleurs il faut trier les moyennes en ordre décroissant DESC, et pour
> plus mauvais il faut trier par ordre croissant
>
>
>
> "Med Bouchenafa" a écrit :
>
>
>>Je ne pense que la solution de Fred puisse marcher
>>Sinon Jeorme n'aurait pas poser la question !!!
>>Comme l'a bien fait remarquer Evariste, l'ORDER BY porte sur l'ensemble
>>jeu de résultat après le regroupement par Union
>>Le passage par une table temporaire est une solution tout à fait
>>Ce que tu as proposé fonctionne aussi à condition de lui rajouter un
>>BY sur l'ensemble
>>Attention à la gestion des doublons (deux elèves ayant la même note)
>>
>>--
>>Bien cordialement
>>Med Bouchenafa
>>
>>"Philippe T [MS]" a écrit dans le message
>>news: %
>>
>>>Bonjour,
>>>
>>>Oui, cela marche aussi !!! :-)
>>>
>>>Phil.
>>>________________________________________________________
>>>Philippe TROTIN http://blogs.msdn.com/ptrotin
>>>Microsoft Services France http://www.microsoft.com/france
>>>
>>>"Fred BROUARD" wrote in message
>>>news:
>>>
>>>>select top 10 nom, moyenne, '1 : les meilleurs' AS NOTATION
>>>>from notes
>>>>UNION
>>>>select top 10 nom, moyenne, '2 : les plus mauvais'
>>>>from notes
>>>>order by NOTATION ASC, moyenne DESC
>>>>
>>>>A +
>>>>
>>>>--
>>>>Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
>>>>Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
>>>>Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
>>>>************************ www.datasapiens.com *************************
>>>>
>>>>jeorme a écrit:
>>>>
>>>>>Bonjour à tous
>>>>>
>>>>>Question pour les pro de SQL:
>>>>>
>>>>>J'ai 50 élèves avec leur moyenne, je veux une requete dans laquelle
>>>>>j'ai
>>>
>>>les
>>>
>>>>>10 meilleurs et les dix plus mauvais.
>>>>>
>>>>>Ex:
>>>>>
>>>>>select top 10 nom, moyenne
>>>>>from notes
>>>>>order by moyenne desc
>>>>>
>>>>>
>>>>>
>>>>>select top 10 nom, moyenne
>>>>>from notes
>>>>>order by moyenne
>>>>>
>>>>>Si je m'ai une union ça foire à cause des order by.
>>>>>
>>>>>Que faire ?
>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>>
Voici la requête sans sous requêtes dans la clause from, sans clause TOP
table temporaire :
CREATE TABLE NOTES (nom VARCHAR(8), moyenne FLOAT)
INSERT INTO NOTES VALUES ('Paul', 20)
INSERT INTO NOTES VALUES ('Pierre', 15)
INSERT INTO NOTES VALUES ('Jean', 0)
INSERT INTO NOTES VALUES ('Jacques', 3)
INSERT INTO NOTES VALUES ('Patrick', 18)
INSERT INTO NOTES VALUES ('Peter', 18)
INSERT INTO NOTES VALUES ('John', 5)
INSERT INTO NOTES VALUES ('Julien', 2)
select N1.nom, N1.moyenne, 'MEILLEURS' AS CLASSEMENT,
(SELECT MIN(moyenne) FROM NOTES) - N1.moyenne AS TRI
from NOTES N1
LEFT OUTER JOIN NOTES N2
ON N1.moyenne <= N2.moyenne
AND N1.nom <> N2.nom
GROUP BY N1.nom, N1.moyenne
HAVING COUNT(N2.nom) < 3
UNION
select N1.nom, N1.moyenne, 'MOINS BON' AS CLASSEMENT,
ABS((SELECT MIN(moyenne) FROM NOTES) - N1.moyenne) AS TRI
from NOTES N1
LEFT OUTER JOIN NOTES N2
ON N1.moyenne >= N2.moyenne
AND N1.nom <> N2.nom
GROUP BY N1.nom, N1.moyenne
HAVING COUNT(N2.nom) < 3
ORDER BY TRI
je l'ai volontairement limitée à 3 : HAVING COUNT(N2.nom) < 3
pour voir si cela marchais. Vous devez l'adapter pour 10.
Il y a peu de problèmes que SQL ne puisse résoudre par une requête !
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
jgabillaud a écrit:
> 100% d'accord avec toi, la requête ne fonctionne pas car il n'est pas
> possible de faire appariatre la même colonne 2 fois dans l'order by.
> De plus les meilleurs possèdent une moyenne élevée, pour obtebir les 10
> meilleurs il faut trier les moyennes en ordre décroissant DESC, et pour
> plus mauvais il faut trier par ordre croissant
>
>
>
> "Med Bouchenafa" a écrit :
>
>
>>Je ne pense que la solution de Fred puisse marcher
>>Sinon Jeorme n'aurait pas poser la question !!!
>>Comme l'a bien fait remarquer Evariste, l'ORDER BY porte sur l'ensemble
>>jeu de résultat après le regroupement par Union
>>Le passage par une table temporaire est une solution tout à fait
>>Ce que tu as proposé fonctionne aussi à condition de lui rajouter un
>>BY sur l'ensemble
>>Attention à la gestion des doublons (deux elèves ayant la même note)
>>
>>--
>>Bien cordialement
>>Med Bouchenafa
>>
>>"Philippe T [MS]" <ptrotin@online.microsoft.com> a écrit dans le message
>>news: %23uHl1MkCFHA.4052@TK2MSFTNGP15.phx.gbl...
>>
>>>Bonjour,
>>>
>>>Oui, cela marche aussi !!! :-)
>>>
>>>Phil.
>>>________________________________________________________
>>>Philippe TROTIN http://blogs.msdn.com/ptrotin
>>>Microsoft Services France http://www.microsoft.com/france
>>>
>>>"Fred BROUARD" <brouardf@club-internet.fr> wrote in message
>>>news:4202993B.5040209@club-internet.fr...
>>>
>>>>select top 10 nom, moyenne, '1 : les meilleurs' AS NOTATION
>>>>from notes
>>>>UNION
>>>>select top 10 nom, moyenne, '2 : les plus mauvais'
>>>>from notes
>>>>order by NOTATION ASC, moyenne DESC
>>>>
>>>>A +
>>>>
>>>>--
>>>>Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
>>>>Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
>>>>Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
>>>>************************ www.datasapiens.com *************************
>>>>
>>>>jeorme a écrit:
>>>>
>>>>>Bonjour à tous
>>>>>
>>>>>Question pour les pro de SQL:
>>>>>
>>>>>J'ai 50 élèves avec leur moyenne, je veux une requete dans laquelle
>>>>>j'ai
>>>
>>>les
>>>
>>>>>10 meilleurs et les dix plus mauvais.
>>>>>
>>>>>Ex:
>>>>>
>>>>>select top 10 nom, moyenne
>>>>>from notes
>>>>>order by moyenne desc
>>>>>
>>>>>
>>>>>
>>>>>select top 10 nom, moyenne
>>>>>from notes
>>>>>order by moyenne
>>>>>
>>>>>Si je m'ai une union ça foire à cause des order by.
>>>>>
>>>>>Que faire ?
>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>>
Voici la requête sans sous requêtes dans la clause from, sans clause TOP
table temporaire :
CREATE TABLE NOTES (nom VARCHAR(8), moyenne FLOAT)
INSERT INTO NOTES VALUES ('Paul', 20)
INSERT INTO NOTES VALUES ('Pierre', 15)
INSERT INTO NOTES VALUES ('Jean', 0)
INSERT INTO NOTES VALUES ('Jacques', 3)
INSERT INTO NOTES VALUES ('Patrick', 18)
INSERT INTO NOTES VALUES ('Peter', 18)
INSERT INTO NOTES VALUES ('John', 5)
INSERT INTO NOTES VALUES ('Julien', 2)
select N1.nom, N1.moyenne, 'MEILLEURS' AS CLASSEMENT,
(SELECT MIN(moyenne) FROM NOTES) - N1.moyenne AS TRI
from NOTES N1
LEFT OUTER JOIN NOTES N2
ON N1.moyenne <= N2.moyenne
AND N1.nom <> N2.nom
GROUP BY N1.nom, N1.moyenne
HAVING COUNT(N2.nom) < 3
UNION
select N1.nom, N1.moyenne, 'MOINS BON' AS CLASSEMENT,
ABS((SELECT MIN(moyenne) FROM NOTES) - N1.moyenne) AS TRI
from NOTES N1
LEFT OUTER JOIN NOTES N2
ON N1.moyenne >= N2.moyenne
AND N1.nom <> N2.nom
GROUP BY N1.nom, N1.moyenne
HAVING COUNT(N2.nom) < 3
ORDER BY TRI
je l'ai volontairement limitée à 3 : HAVING COUNT(N2.nom) < 3
pour voir si cela marchais. Vous devez l'adapter pour 10.
Il y a peu de problèmes que SQL ne puisse résoudre par une requête !
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
jgabillaud a écrit:
> 100% d'accord avec toi, la requête ne fonctionne pas car il n'est pas
> possible de faire appariatre la même colonne 2 fois dans l'order by.
> De plus les meilleurs possèdent une moyenne élevée, pour obtebir les 10
> meilleurs il faut trier les moyennes en ordre décroissant DESC, et pour
> plus mauvais il faut trier par ordre croissant
>
>
>
> "Med Bouchenafa" a écrit :
>
>
>>Je ne pense que la solution de Fred puisse marcher
>>Sinon Jeorme n'aurait pas poser la question !!!
>>Comme l'a bien fait remarquer Evariste, l'ORDER BY porte sur l'ensemble
>>jeu de résultat après le regroupement par Union
>>Le passage par une table temporaire est une solution tout à fait
>>Ce que tu as proposé fonctionne aussi à condition de lui rajouter un
>>BY sur l'ensemble
>>Attention à la gestion des doublons (deux elèves ayant la même note)
>>
>>--
>>Bien cordialement
>>Med Bouchenafa
>>
>>"Philippe T [MS]" a écrit dans le message
>>news: %
>>
>>>Bonjour,
>>>
>>>Oui, cela marche aussi !!! :-)
>>>
>>>Phil.
>>>________________________________________________________
>>>Philippe TROTIN http://blogs.msdn.com/ptrotin
>>>Microsoft Services France http://www.microsoft.com/france
>>>
>>>"Fred BROUARD" wrote in message
>>>news:
>>>
>>>>select top 10 nom, moyenne, '1 : les meilleurs' AS NOTATION
>>>>from notes
>>>>UNION
>>>>select top 10 nom, moyenne, '2 : les plus mauvais'
>>>>from notes
>>>>order by NOTATION ASC, moyenne DESC
>>>>
>>>>A +
>>>>
>>>>--
>>>>Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
>>>>Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
>>>>Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
>>>>************************ www.datasapiens.com *************************
>>>>
>>>>jeorme a écrit:
>>>>
>>>>>Bonjour à tous
>>>>>
>>>>>Question pour les pro de SQL:
>>>>>
>>>>>J'ai 50 élèves avec leur moyenne, je veux une requete dans laquelle
>>>>>j'ai
>>>
>>>les
>>>
>>>>>10 meilleurs et les dix plus mauvais.
>>>>>
>>>>>Ex:
>>>>>
>>>>>select top 10 nom, moyenne
>>>>>from notes
>>>>>order by moyenne desc
>>>>>
>>>>>
>>>>>
>>>>>select top 10 nom, moyenne
>>>>>from notes
>>>>>order by moyenne
>>>>>
>>>>>Si je m'ai une union ça foire à cause des order by.
>>>>>
>>>>>Que faire ?
>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>>