Pb Requete avec order et group by

Le
Jean Claude
Bonjour

j'effectue une requete avec group by et order et cela beug, ma requete :

DBCommandUne = New OleDbDataAdapter _

("Select * from " & Session("TableDep") & " Where MotCles" _

& " LIKE '%" & Session("Recherche") & "%'" & " group by Ville order by
OKsite", DBConn)

j'ai le message :impossible d'effectuer un regroupement sur les champs
selectionnés avec '*'

Si je remplace * par ville, j'ai le message :

Vous avez spécifié une requête ne comprenat pas l'expression 'OKsite' comme
une porte de la fonction d'agrégat

Cela veut-il dire qu'il n'est pas possible d'écrire Group by et order dans
une même requete ou pouvez-vous me donner le bon code

Merci pour vos réponses
Cordialement
JClaude
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrice
Le #12208611
Le GROUP BY consiste à regrouper plusieurs lignes sur une même ligne. Donc
deux cas :
- soit le champs est dans le group by, il peut alors apparaitre dans le
SELECT sans problème
- soit ce n'est pas le cas et il ne peut pas apparaitre directement car
comment savoir quelle est la valeur à prendre parmi les lignes regroupées ?

Exemple :

Ville Mot
PARIS A
PARIS Z
AIX C

Le Group by ville crée une ligne par ville différente mais je ne peux pas
choisir d'afficher Mot car j'ai plusieurs valeurs. Laquelle prendre ?
Généralement on mets une fonction d'aggrégation style MAX, MIN, SUM etc.. ce
qui permet d'indiquer ce que l'on veut.

Idem pour le tri, une fois que les lignes sont regroupées je ne peux pas
dire que je trie sur la colonne Mot (faudrait il prendre A ou Z pour le tri
de PARIS ?)

Cf la doc du SGBD pour plus de détails...

Cela me laisse penser que le GROUP BY n'est peut-être pas ce que tu veux ?

--
Patrice

"Jean Claude" news: 47d50194$0$835$
Bonjour

j'effectue une requete avec group by et order et cela beug, ma requete :

DBCommandUne = New OleDbDataAdapter _

("Select * from " & Session("TableDep") & " Where MotCles" _

& " LIKE '%" & Session("Recherche") & "%'" & " group by Ville order by
OKsite", DBConn)

j'ai le message :impossible d'effectuer un regroupement sur les champs
selectionnés avec '*'

Si je remplace * par ville, j'ai le message :

Vous avez spécifié une requête ne comprenat pas l'expression 'OKsite'
comme une porte de la fonction d'agrégat

Cela veut-il dire qu'il n'est pas possible d'écrire Group by et order dans
une même requete ou pouvez-vous me donner le bon code

Merci pour vos réponses
Cordialement
JClaude







Jean Claude
Le #12208601
Merci Patrice pour ta réponse

dans mon cas, la valeur de Mot est soit nulle soit toujours égale à "OKsite"

Jean Claude
"Patrice"
Le GROUP BY consiste à regrouper plusieurs lignes sur une même ligne. Donc
deux cas :
- soit le champs est dans le group by, il peut alors apparaitre dans le
SELECT sans problème
- soit ce n'est pas le cas et il ne peut pas apparaitre directement car
comment savoir quelle est la valeur à prendre parmi les lignes regroupées
?

Exemple :

Ville Mot
PARIS A
PARIS Z
AIX C

Le Group by ville crée une ligne par ville différente mais je ne peux pas
choisir d'afficher Mot car j'ai plusieurs valeurs. Laquelle prendre ?
Généralement on mets une fonction d'aggrégation style MAX, MIN, SUM etc..
ce qui permet d'indiquer ce que l'on veut.

Idem pour le tri, une fois que les lignes sont regroupées je ne peux pas
dire que je trie sur la colonne Mot (faudrait il prendre A ou Z pour le
tri de PARIS ?)

Cf la doc du SGBD pour plus de détails...

Cela me laisse penser que le GROUP BY n'est peut-être pas ce que tu veux ?

--
Patrice

"Jean Claude" news: 47d50194$0$835$
Bonjour

j'effectue une requete avec group by et order et cela beug, ma requete :

DBCommandUne = New OleDbDataAdapter _

("Select * from " & Session("TableDep") & " Where MotCles" _

& " LIKE '%" & Session("Recherche") & "%'" & " group by Ville order by
OKsite", DBConn)

j'ai le message :impossible d'effectuer un regroupement sur les champs
selectionnés avec '*'

Si je remplace * par ville, j'ai le message :

Vous avez spécifié une requête ne comprenat pas l'expression 'OKsite'
comme une porte de la fonction d'agrégat

Cela veut-il dire qu'il n'est pas possible d'écrire Group by et order
dans une même requete ou pouvez-vous me donner le bon code

Merci pour vos réponses
Cordialement
JClaude











Patrice
Le #12208591
Oui mais si tu as des valeurs différentes pour plusieurs lignes d'une même
ville laquelle prendre ?

Par exemple :

SELECT Ville FROM MaTable GROUP BY ville ORDER BY MAX(Mot)

Le tri sera donc fait pour une ville en prenant la valeur max du champ mot
pour le tri...

As t'on parfois dans cette table plusieurs fois la même ville ? Si non, le
group by ne sert à rien et tu cherches sans doute à faire autre chose.

--
Patrice

"Jean Claude" news: 47d68e4a$0$862$
Merci Patrice pour ta réponse

dans mon cas, la valeur de Mot est soit nulle soit toujours égale à
"OKsite"

Jean Claude
"Patrice"
Le GROUP BY consiste à regrouper plusieurs lignes sur une même ligne.
Donc deux cas :
- soit le champs est dans le group by, il peut alors apparaitre dans le
SELECT sans problème
- soit ce n'est pas le cas et il ne peut pas apparaitre directement car
comment savoir quelle est la valeur à prendre parmi les lignes regroupées
?

Exemple :

Ville Mot
PARIS A
PARIS Z
AIX C

Le Group by ville crée une ligne par ville différente mais je ne peux pas
choisir d'afficher Mot car j'ai plusieurs valeurs. Laquelle prendre ?
Généralement on mets une fonction d'aggrégation style MAX, MIN, SUM etc..
ce qui permet d'indiquer ce que l'on veut.

Idem pour le tri, une fois que les lignes sont regroupées je ne peux pas
dire que je trie sur la colonne Mot (faudrait il prendre A ou Z pour le
tri de PARIS ?)

Cf la doc du SGBD pour plus de détails...

Cela me laisse penser que le GROUP BY n'est peut-être pas ce que tu veux
?

--
Patrice

"Jean Claude" news: 47d50194$0$835$
Bonjour

j'effectue une requete avec group by et order et cela beug, ma requete :

DBCommandUne = New OleDbDataAdapter _

("Select * from " & Session("TableDep") & " Where MotCles" _

& " LIKE '%" & Session("Recherche") & "%'" & " group by Ville order by
OKsite", DBConn)

j'ai le message :impossible d'effectuer un regroupement sur les champs
selectionnés avec '*'

Si je remplace * par ville, j'ai le message :

Vous avez spécifié une requête ne comprenat pas l'expression 'OKsite'
comme une porte de la fonction d'agrégat

Cela veut-il dire qu'il n'est pas possible d'écrire Group by et order
dans une même requete ou pouvez-vous me donner le bon code

Merci pour vos réponses
Cordialement
JClaude















Jean Claude
Le #12208571
j'ai plusieurs fois la même ville, avec la valeur OKsite nulle ou OK
Ce que je veux c'est afficher dans mon gridview d'abord les villes dont la
valeur est OK et ensuite les autres villes par ordre alphabétique

Jean Claude
"Patrice"
Oui mais si tu as des valeurs différentes pour plusieurs lignes d'une même
ville laquelle prendre ?

Par exemple :

SELECT Ville FROM MaTable GROUP BY ville ORDER BY MAX(Mot)

Le tri sera donc fait pour une ville en prenant la valeur max du champ mot
pour le tri...

As t'on parfois dans cette table plusieurs fois la même ville ? Si non, le
group by ne sert à rien et tu cherches sans doute à faire autre chose.

--
Patrice

"Jean Claude" news: 47d68e4a$0$862$
Merci Patrice pour ta réponse

dans mon cas, la valeur de Mot est soit nulle soit toujours égale à
"OKsite"

Jean Claude
"Patrice"
Le GROUP BY consiste à regrouper plusieurs lignes sur une même ligne.
Donc deux cas :
- soit le champs est dans le group by, il peut alors apparaitre dans le
SELECT sans problème
- soit ce n'est pas le cas et il ne peut pas apparaitre directement car
comment savoir quelle est la valeur à prendre parmi les lignes
regroupées ?

Exemple :

Ville Mot
PARIS A
PARIS Z
AIX C

Le Group by ville crée une ligne par ville différente mais je ne peux
pas choisir d'afficher Mot car j'ai plusieurs valeurs. Laquelle prendre
? Généralement on mets une fonction d'aggrégation style MAX, MIN, SUM
etc.. ce qui permet d'indiquer ce que l'on veut.

Idem pour le tri, une fois que les lignes sont regroupées je ne peux pas
dire que je trie sur la colonne Mot (faudrait il prendre A ou Z pour le
tri de PARIS ?)

Cf la doc du SGBD pour plus de détails...

Cela me laisse penser que le GROUP BY n'est peut-être pas ce que tu veux
?

--
Patrice

"Jean Claude" de news: 47d50194$0$835$
Bonjour

j'effectue une requete avec group by et order et cela beug, ma requete
:

DBCommandUne = New OleDbDataAdapter _

("Select * from " & Session("TableDep") & " Where MotCles" _

& " LIKE '%" & Session("Recherche") & "%'" & " group by Ville order
by OKsite", DBConn)

j'ai le message :impossible d'effectuer un regroupement sur les champs
selectionnés avec '*'

Si je remplace * par ville, j'ai le message :

Vous avez spécifié une requête ne comprenat pas l'expression 'OKsite'
comme une porte de la fonction d'agrégat

Cela veut-il dire qu'il n'est pas possible d'écrire Group by et order
dans une même requete ou pouvez-vous me donner le bon code

Merci pour vos réponses
Cordialement
JClaude



















Patrice
Le #12208551
Pour commencer, je dirais :
- SELECT Ville FROM MaTable ORDER BY OKSite DESC,Ville

Le OKSite DESC permet de mettre les valeurs renseignées avant les "valeurs"
NULL.

Après si la même Ville apparait effectivement plusieurs fois et que c'est un
problème qq chose comme :

SELECT Ville FROM MaTable GROUP BY Ville ORDER BY MAX(OKSite) DESC

permet de ne faire apparaitre les villes qu'une fois et de prendre la valeur
maxi (ou utilise MIN si nécessaire) si on a plusieurs lignes avec la même
ville et des OKSite différents. ORDER BY OKSite tout court n'est pas valable
car si on plusieurs lignes avec une même ville, ces lignes sont regroupées
et il faut bien indiquer comment *les* valeurs de OKSite doivent être
regroupés pour produire *la* ligne concernant cette ville...

Pour aller au delà il faudrait expliquer ce que représente exactement cette
table et pourquoi la même ville peut y être présente plusieurs fois (avec
des valeurs différentes de OK Site ?) ce qui pourrait être un problème de
conception (par exemple on pourrait avoir d'un côté une table qui donne pour
chaque ville, les mots-clés correspondant donc effectivement plusieurs
lignes mais la mettre en liaison avec une tbale ne comportant pas de
doublons et qui donne les caractéristiques (oksite, population, maire élue
en 2008 etc...) de chaque ville...

---
Patrice

"Jean Claude" news: 47d6b33e$0$862$
j'ai plusieurs fois la même ville, avec la valeur OKsite nulle ou OK
Ce que je veux c'est afficher dans mon gridview d'abord les villes dont la
valeur est OK et ensuite les autres villes par ordre alphabétique

Jean Claude
"Patrice"
Oui mais si tu as des valeurs différentes pour plusieurs lignes d'une
même ville laquelle prendre ?

Par exemple :

SELECT Ville FROM MaTable GROUP BY ville ORDER BY MAX(Mot)

Le tri sera donc fait pour une ville en prenant la valeur max du champ
mot pour le tri...

As t'on parfois dans cette table plusieurs fois la même ville ? Si non,
le group by ne sert à rien et tu cherches sans doute à faire autre chose.

--
Patrice

"Jean Claude" news: 47d68e4a$0$862$
Merci Patrice pour ta réponse

dans mon cas, la valeur de Mot est soit nulle soit toujours égale à
"OKsite"

Jean Claude
"Patrice"
Le GROUP BY consiste à regrouper plusieurs lignes sur une même ligne.
Donc deux cas :
- soit le champs est dans le group by, il peut alors apparaitre dans le
SELECT sans problème
- soit ce n'est pas le cas et il ne peut pas apparaitre directement car
comment savoir quelle est la valeur à prendre parmi les lignes
regroupées ?

Exemple :

Ville Mot
PARIS A
PARIS Z
AIX C

Le Group by ville crée une ligne par ville différente mais je ne peux
pas choisir d'afficher Mot car j'ai plusieurs valeurs. Laquelle prendre
? Généralement on mets une fonction d'aggrégation style MAX, MIN, SUM
etc.. ce qui permet d'indiquer ce que l'on veut.

Idem pour le tri, une fois que les lignes sont regroupées je ne peux
pas dire que je trie sur la colonne Mot (faudrait il prendre A ou Z
pour le tri de PARIS ?)

Cf la doc du SGBD pour plus de détails...

Cela me laisse penser que le GROUP BY n'est peut-être pas ce que tu
veux ?

--
Patrice

"Jean Claude" de news: 47d50194$0$835$
Bonjour

j'effectue une requete avec group by et order et cela beug, ma requete
:

DBCommandUne = New OleDbDataAdapter _

("Select * from " & Session("TableDep") & " Where MotCles" _

& " LIKE '%" & Session("Recherche") & "%'" & " group by Ville order
by OKsite", DBConn)

j'ai le message :impossible d'effectuer un regroupement sur les champs
selectionnés avec '*'

Si je remplace * par ville, j'ai le message :

Vous avez spécifié une requête ne comprenat pas l'expression 'OKsite'
comme une porte de la fonction d'agrégat

Cela veut-il dire qu'il n'est pas possible d'écrire Group by et order
dans une même requete ou pouvez-vous me donner le bon code

Merci pour vos réponses
Cordialement
JClaude























Jean Claude
Le #12208541
Merci pour ta réponse Patrice

mais cela beug, j'écris la requete comme tu me le conseilles :
SELECT Ville FROM MaTable GROUP BY Ville ORDER BY MAX(OKSite) DESC
et j'ai le message :
Vous avez spécifié une requête ne comprenat pas l'expression spécifiée
'OKsite'
comme une partie de la fonction d'agrégat

Cordialement
JClaude

"Patrice"
Pour commencer, je dirais :
- SELECT Ville FROM MaTable ORDER BY OKSite DESC,Ville

Le OKSite DESC permet de mettre les valeurs renseignées avant les
"valeurs" NULL.

Après si la même Ville apparait effectivement plusieurs fois et que c'est
un problème qq chose comme :

SELECT Ville FROM MaTable GROUP BY Ville ORDER BY MAX(OKSite) DESC

permet de ne faire apparaitre les villes qu'une fois et de prendre la
valeur maxi (ou utilise MIN si nécessaire) si on a plusieurs lignes avec
la même ville et des OKSite différents. ORDER BY OKSite tout court n'est
pas valable car si on plusieurs lignes avec une même ville, ces lignes
sont regroupées et il faut bien indiquer comment *les* valeurs de OKSite
doivent être regroupés pour produire *la* ligne concernant cette ville...

Pour aller au delà il faudrait expliquer ce que représente exactement
cette table et pourquoi la même ville peut y être présente plusieurs fois
(avec des valeurs différentes de OK Site ?) ce qui pourrait être un
problème de conception (par exemple on pourrait avoir d'un côté une table
qui donne pour chaque ville, les mots-clés correspondant donc
effectivement plusieurs lignes mais la mettre en liaison avec une tbale ne
comportant pas de doublons et qui donne les caractéristiques (oksite,
population, maire élue en 2008 etc...) de chaque ville...

---
Patrice

"Jean Claude" news: 47d6b33e$0$862$
j'ai plusieurs fois la même ville, avec la valeur OKsite nulle ou OK
Ce que je veux c'est afficher dans mon gridview d'abord les villes dont
la valeur est OK et ensuite les autres villes par ordre alphabétique

Jean Claude
"Patrice"
Oui mais si tu as des valeurs différentes pour plusieurs lignes d'une
même ville laquelle prendre ?

Par exemple :

SELECT Ville FROM MaTable GROUP BY ville ORDER BY MAX(Mot)

Le tri sera donc fait pour une ville en prenant la valeur max du champ
mot pour le tri...

As t'on parfois dans cette table plusieurs fois la même ville ? Si non,
le group by ne sert à rien et tu cherches sans doute à faire autre
chose.

--
Patrice

"Jean Claude" de news: 47d68e4a$0$862$
Merci Patrice pour ta réponse

dans mon cas, la valeur de Mot est soit nulle soit toujours égale à
"OKsite"

Jean Claude
"Patrice" news:
Le GROUP BY consiste à regrouper plusieurs lignes sur une même ligne.
Donc deux cas :
- soit le champs est dans le group by, il peut alors apparaitre dans
le SELECT sans problème
- soit ce n'est pas le cas et il ne peut pas apparaitre directement
car comment savoir quelle est la valeur à prendre parmi les lignes
regroupées ?

Exemple :

Ville Mot
PARIS A
PARIS Z
AIX C

Le Group by ville crée une ligne par ville différente mais je ne peux
pas choisir d'afficher Mot car j'ai plusieurs valeurs. Laquelle
prendre ? Généralement on mets une fonction d'aggrégation style MAX,
MIN, SUM etc.. ce qui permet d'indiquer ce que l'on veut.

Idem pour le tri, une fois que les lignes sont regroupées je ne peux
pas dire que je trie sur la colonne Mot (faudrait il prendre A ou Z
pour le tri de PARIS ?)

Cf la doc du SGBD pour plus de détails...

Cela me laisse penser que le GROUP BY n'est peut-être pas ce que tu
veux ?

--
Patrice

"Jean Claude" de news: 47d50194$0$835$
Bonjour

j'effectue une requete avec group by et order et cela beug, ma
requete :

DBCommandUne = New OleDbDataAdapter _

("Select * from " & Session("TableDep") & " Where MotCles" _

& " LIKE '%" & Session("Recherche") & "%'" & " group by Ville order
by OKsite", DBConn)

j'ai le message :impossible d'effectuer un regroupement sur les
champs selectionnés avec '*'

Si je remplace * par ville, j'ai le message :

Vous avez spécifié une requête ne comprenat pas l'expression 'OKsite'
comme une porte de la fonction d'agrégat

Cela veut-il dire qu'il n'est pas possible d'écrire Group by et order
dans une même requete ou pouvez-vous me donner le bon code

Merci pour vos réponses
Cordialement
JClaude



























Patrice
Le #12208531
Et que donne :

SELECT Ville,MAX(OKSite) FROM MaTable GROUP BY Ville ORDER BY MAX(OkSite)
DESC

Quelle est la base, Access je crois ?

Eventuellement faire un copier/coller du texte de la requête pour éviter
tout malentendu (je dirais que le champ OKSite apparait dans la clause
SELECT ?)

--
Patrice


"Jean Claude" news: 47da9c22$0$894$
Merci pour ta réponse Patrice

mais cela beug, j'écris la requete comme tu me le conseilles :
SELECT Ville FROM MaTable GROUP BY Ville ORDER BY MAX(OKSite) DESC
et j'ai le message :
Vous avez spécifié une requête ne comprenat pas l'expression spécifiée
'OKsite'
comme une partie de la fonction d'agrégat

Cordialement
JClaude

"Patrice"
Pour commencer, je dirais :
- SELECT Ville FROM MaTable ORDER BY OKSite DESC,Ville

Le OKSite DESC permet de mettre les valeurs renseignées avant les
"valeurs" NULL.

Après si la même Ville apparait effectivement plusieurs fois et que c'est
un problème qq chose comme :

SELECT Ville FROM MaTable GROUP BY Ville ORDER BY MAX(OKSite) DESC

permet de ne faire apparaitre les villes qu'une fois et de prendre la
valeur maxi (ou utilise MIN si nécessaire) si on a plusieurs lignes avec
la même ville et des OKSite différents. ORDER BY OKSite tout court n'est
pas valable car si on plusieurs lignes avec une même ville, ces lignes
sont regroupées et il faut bien indiquer comment *les* valeurs de OKSite
doivent être regroupés pour produire *la* ligne concernant cette ville...

Pour aller au delà il faudrait expliquer ce que représente exactement
cette table et pourquoi la même ville peut y être présente plusieurs fois
(avec des valeurs différentes de OK Site ?) ce qui pourrait être un
problème de conception (par exemple on pourrait avoir d'un côté une table
qui donne pour chaque ville, les mots-clés correspondant donc
effectivement plusieurs lignes mais la mettre en liaison avec une tbale
ne comportant pas de doublons et qui donne les caractéristiques (oksite,
population, maire élue en 2008 etc...) de chaque ville...

---
Patrice

"Jean Claude" news: 47d6b33e$0$862$
j'ai plusieurs fois la même ville, avec la valeur OKsite nulle ou OK
Ce que je veux c'est afficher dans mon gridview d'abord les villes dont
la valeur est OK et ensuite les autres villes par ordre alphabétique

Jean Claude
"Patrice"
Oui mais si tu as des valeurs différentes pour plusieurs lignes d'une
même ville laquelle prendre ?

Par exemple :

SELECT Ville FROM MaTable GROUP BY ville ORDER BY MAX(Mot)

Le tri sera donc fait pour une ville en prenant la valeur max du champ
mot pour le tri...

As t'on parfois dans cette table plusieurs fois la même ville ? Si non,
le group by ne sert à rien et tu cherches sans doute à faire autre
chose.

--
Patrice

"Jean Claude" de news: 47d68e4a$0$862$
Merci Patrice pour ta réponse

dans mon cas, la valeur de Mot est soit nulle soit toujours égale à
"OKsite"

Jean Claude
"Patrice" news:
Le GROUP BY consiste à regrouper plusieurs lignes sur une même ligne.
Donc deux cas :
- soit le champs est dans le group by, il peut alors apparaitre dans
le SELECT sans problème
- soit ce n'est pas le cas et il ne peut pas apparaitre directement
car comment savoir quelle est la valeur à prendre parmi les lignes
regroupées ?

Exemple :

Ville Mot
PARIS A
PARIS Z
AIX C

Le Group by ville crée une ligne par ville différente mais je ne peux
pas choisir d'afficher Mot car j'ai plusieurs valeurs. Laquelle
prendre ? Généralement on mets une fonction d'aggrégation style MAX,
MIN, SUM etc.. ce qui permet d'indiquer ce que l'on veut.

Idem pour le tri, une fois que les lignes sont regroupées je ne peux
pas dire que je trie sur la colonne Mot (faudrait il prendre A ou Z
pour le tri de PARIS ?)

Cf la doc du SGBD pour plus de détails...

Cela me laisse penser que le GROUP BY n'est peut-être pas ce que tu
veux ?

--
Patrice

"Jean Claude" message de news: 47d50194$0$835$
Bonjour

j'effectue une requete avec group by et order et cela beug, ma
requete :

DBCommandUne = New OleDbDataAdapter _

("Select * from " & Session("TableDep") & " Where MotCles" _

& " LIKE '%" & Session("Recherche") & "%'" & " group by Ville
order by OKsite", DBConn)

j'ai le message :impossible d'effectuer un regroupement sur les
champs selectionnés avec '*'

Si je remplace * par ville, j'ai le message :

Vous avez spécifié une requête ne comprenat pas l'expression
'OKsite' comme une porte de la fonction d'agrégat

Cela veut-il dire qu'il n'est pas possible d'écrire Group by et
order dans une même requete ou pouvez-vous me donner le bon code

Merci pour vos réponses
Cordialement
JClaude































Jean Claude
Le #12208521
Excuse moi Patrice
c'est bon, l'erreur venait du fait que j'avais écrit :
SELECT Ville, OKSite .............

Merci pour ton aide
Cordialement
Jean Claude
"Patrice" %237o%
Et que donne :

SELECT Ville,MAX(OKSite) FROM MaTable GROUP BY Ville ORDER BY MAX(OkSite)
DESC

Quelle est la base, Access je crois ?

Eventuellement faire un copier/coller du texte de la requête pour éviter
tout malentendu (je dirais que le champ OKSite apparait dans la clause
SELECT ?)

--
Patrice


"Jean Claude" news: 47da9c22$0$894$
Merci pour ta réponse Patrice

mais cela beug, j'écris la requete comme tu me le conseilles :
SELECT Ville FROM MaTable GROUP BY Ville ORDER BY MAX(OKSite) DESC
et j'ai le message :
Vous avez spécifié une requête ne comprenat pas l'expression spécifiée
'OKsite'
comme une partie de la fonction d'agrégat

Cordialement
JClaude

"Patrice"
Pour commencer, je dirais :
- SELECT Ville FROM MaTable ORDER BY OKSite DESC,Ville

Le OKSite DESC permet de mettre les valeurs renseignées avant les
"valeurs" NULL.

Après si la même Ville apparait effectivement plusieurs fois et que
c'est un problème qq chose comme :

SELECT Ville FROM MaTable GROUP BY Ville ORDER BY MAX(OKSite) DESC

permet de ne faire apparaitre les villes qu'une fois et de prendre la
valeur maxi (ou utilise MIN si nécessaire) si on a plusieurs lignes avec
la même ville et des OKSite différents. ORDER BY OKSite tout court n'est
pas valable car si on plusieurs lignes avec une même ville, ces lignes
sont regroupées et il faut bien indiquer comment *les* valeurs de OKSite
doivent être regroupés pour produire *la* ligne concernant cette
ville...

Pour aller au delà il faudrait expliquer ce que représente exactement
cette table et pourquoi la même ville peut y être présente plusieurs
fois (avec des valeurs différentes de OK Site ?) ce qui pourrait être un
problème de conception (par exemple on pourrait avoir d'un côté une
table qui donne pour chaque ville, les mots-clés correspondant donc
effectivement plusieurs lignes mais la mettre en liaison avec une tbale
ne comportant pas de doublons et qui donne les caractéristiques (oksite,
population, maire élue en 2008 etc...) de chaque ville...

---
Patrice

"Jean Claude" de news: 47d6b33e$0$862$
j'ai plusieurs fois la même ville, avec la valeur OKsite nulle ou OK
Ce que je veux c'est afficher dans mon gridview d'abord les villes dont
la valeur est OK et ensuite les autres villes par ordre alphabétique

Jean Claude
"Patrice" news:
Oui mais si tu as des valeurs différentes pour plusieurs lignes d'une
même ville laquelle prendre ?

Par exemple :

SELECT Ville FROM MaTable GROUP BY ville ORDER BY MAX(Mot)

Le tri sera donc fait pour une ville en prenant la valeur max du champ
mot pour le tri...

As t'on parfois dans cette table plusieurs fois la même ville ? Si
non, le group by ne sert à rien et tu cherches sans doute à faire
autre chose.

--
Patrice

"Jean Claude" de news: 47d68e4a$0$862$
Merci Patrice pour ta réponse

dans mon cas, la valeur de Mot est soit nulle soit toujours égale à
"OKsite"

Jean Claude
"Patrice" news:
Le GROUP BY consiste à regrouper plusieurs lignes sur une même
ligne. Donc deux cas :
- soit le champs est dans le group by, il peut alors apparaitre dans
le SELECT sans problème
- soit ce n'est pas le cas et il ne peut pas apparaitre directement
car comment savoir quelle est la valeur à prendre parmi les lignes
regroupées ?

Exemple :

Ville Mot
PARIS A
PARIS Z
AIX C

Le Group by ville crée une ligne par ville différente mais je ne
peux pas choisir d'afficher Mot car j'ai plusieurs valeurs. Laquelle
prendre ? Généralement on mets une fonction d'aggrégation style MAX,
MIN, SUM etc.. ce qui permet d'indiquer ce que l'on veut.

Idem pour le tri, une fois que les lignes sont regroupées je ne peux
pas dire que je trie sur la colonne Mot (faudrait il prendre A ou Z
pour le tri de PARIS ?)

Cf la doc du SGBD pour plus de détails...

Cela me laisse penser que le GROUP BY n'est peut-être pas ce que tu
veux ?

--
Patrice

"Jean Claude" message de news: 47d50194$0$835$
Bonjour

j'effectue une requete avec group by et order et cela beug, ma
requete :

DBCommandUne = New OleDbDataAdapter _

("Select * from " & Session("TableDep") & " Where MotCles" _

& " LIKE '%" & Session("Recherche") & "%'" & " group by Ville
order by OKsite", DBConn)

j'ai le message :impossible d'effectuer un regroupement sur les
champs selectionnés avec '*'

Si je remplace * par ville, j'ai le message :

Vous avez spécifié une requête ne comprenat pas l'expression
'OKsite' comme une porte de la fonction d'agrégat

Cela veut-il dire qu'il n'est pas possible d'écrire Group by et
order dans une même requete ou pouvez-vous me donner le bon code

Merci pour vos réponses
Cordialement
JClaude



































Publicité
Poster une réponse
Anonyme