OVH Cloud OVH Cloud

SQL tri un peu complexe

10 réponses
Avatar
Bataille Jean-Paul
Bjr,

Je dispose d'une liste de fournisseur entreprise, avec les champs -entre
autres- "nom_fournisseur","ville" et "mode-achat".
Ce champ "mode-achat" présente 3 valeurs, disons 1,2 et 3 pour les
fournisseurs concernant mon service, sinon il reste à NULL.

Je sais constituer une requète de manière à réduire la liste des
fournisseurs à ceux du service donc si "mode-achat" <> NULL.
De plus ceux pour lequel le "mode-achat" est 2 , je concatene le
"nom_fournisseur" et la "ville".

J'obtiens alors la liste compléte des fournisseurs.

Mon soucis est alors de classer celle ci de telle manière que les
fournisseurs soient en ordre alphabétique sur "nom-fournisseur" et ensuite
sur ville.
Sachant que -difficulté supplémentaire- pour ceux de "mode achat" = 2, on
trouve les cas suivants pour la même ville :

a) nom_fournisseur = "EdF"
b) nom_fournisseur = "EdF agence commerciale" ou "EdF
unité xxx"


Et je voudrais obtenir un classement tel que ci-dessous :

ANATOLE 1
BEATRICE 3
BERNARD 1
CHARLES 2
...........
EdF Amiens 2
EdF Boulogne 2
EdF agence ..Boulogne 2
EdF Calais 2
.............
FT Boulogne 2
FT agence.... Boulogne 2
...............
GASTON 3
HECTOR 1


En fait seul les fournisseurs de "mode-achat" 2 posent un Pb .


Merci pour votre aide.
Jean-Paul B.

10 réponses

Avatar
Pierre CFI [mvp]
bonjour
il faut mettre les champs dans l'ordre de tri
nom tri
ville tri
code tri
concatené non trié

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Bataille Jean-Paul" a écrit dans le message de news: 4024b727$0$28106$
Bjr,

Je dispose d'une liste de fournisseur entreprise, avec les champs -entre
autres- "nom_fournisseur","ville" et "mode-achat".
Ce champ "mode-achat" présente 3 valeurs, disons 1,2 et 3 pour les
fournisseurs concernant mon service, sinon il reste à NULL.

Je sais constituer une requète de manière à réduire la liste des
fournisseurs à ceux du service donc si "mode-achat" <> NULL.
De plus ceux pour lequel le "mode-achat" est 2 , je concatene le
"nom_fournisseur" et la "ville".

J'obtiens alors la liste compléte des fournisseurs.

Mon soucis est alors de classer celle ci de telle manière que les
fournisseurs soient en ordre alphabétique sur "nom-fournisseur" et ensuite
sur ville.
Sachant que -difficulté supplémentaire- pour ceux de "mode achat" = 2, on
trouve les cas suivants pour la même ville :

a) nom_fournisseur = "EdF"
b) nom_fournisseur = "EdF agence commerciale" ou "EdF
unité xxx"


Et je voudrais obtenir un classement tel que ci-dessous :

ANATOLE 1
BEATRICE 3
BERNARD 1
CHARLES 2
...........
EdF Amiens 2
EdF Boulogne 2
EdF agence ..Boulogne 2
EdF Calais 2
.............
FT Boulogne 2
FT agence.... Boulogne 2
...............
GASTON 3
HECTOR 1


En fait seul les fournisseurs de "mode-achat" 2 posent un Pb .


Merci pour votre aide.
Jean-Paul B.




Avatar
Eric
Hi !
Pas simple je crois car "EDF agence" Boulogne s'affichera
après "EDF" Calais

;-)
Eric
-----Message d'origine-----
bonjour
il faut mettre les champs dans l'ordre de tri
nom tri
ville tri
code tri
concatené non trié

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Bataille Jean-Paul" a écrit
dans le message de news: 4024b727$0$28106

$
Bjr,

Je dispose d'une liste de fournisseur entreprise, avec
les champs -entre


autres- "nom_fournisseur","ville" et "mode-achat".
Ce champ "mode-achat" présente 3 valeurs, disons 1,2 et
3 pour les


fournisseurs concernant mon service, sinon il reste à
NULL.



Je sais constituer une requète de manière à réduire la
liste des


fournisseurs à ceux du service donc si "mode-achat" <>
NULL.


De plus ceux pour lequel le "mode-achat" est 2 , je
concatene le


"nom_fournisseur" et la "ville".

J'obtiens alors la liste compléte des fournisseurs.

Mon soucis est alors de classer celle ci de telle
manière que les


fournisseurs soient en ordre alphabétique sur "nom-
fournisseur" et ensuite


sur ville.
Sachant que -difficulté supplémentaire- pour ceux
de "mode achat" = 2, on


trouve les cas suivants pour la même ville :

a) nom_fournisseur = "EdF"
b) nom_fournisseur = "EdF agence
commerciale" ou "EdF


unité xxx"


Et je voudrais obtenir un classement tel que ci-
dessous :



ANATOLE 1
BEATRICE 3
BERNARD 1
CHARLES 2
...........
EdF Amiens 2
EdF Boulogne 2
EdF agence ..Boulogne 2
EdF Calais 2
.............
FT Boulogne 2
FT agence.... Boulogne 2
...............
GASTON 3
HECTOR 1


En fait seul les fournisseurs de "mode-achat" 2 posent
un Pb .




Merci pour votre aide.
Jean-Paul B.





.




Avatar
Pierre CFI [mvp]
eh oui, peut etre en trichant, en créant un champ sur 3 premiers caractéres :o((

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Eric" a écrit dans le message de news: c11101c3ed6c$5aba3730$
Hi !
Pas simple je crois car "EDF agence" Boulogne s'affichera
après "EDF" Calais

;-)
Eric
-----Message d'origine-----
bonjour
il faut mettre les champs dans l'ordre de tri
nom tri
ville tri
code tri
concatené non trié

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Bataille Jean-Paul" a écrit
dans le message de news: 4024b727$0$28106

$
Bjr,

Je dispose d'une liste de fournisseur entreprise, avec
les champs -entre


autres- "nom_fournisseur","ville" et "mode-achat".
Ce champ "mode-achat" présente 3 valeurs, disons 1,2 et
3 pour les


fournisseurs concernant mon service, sinon il reste à
NULL.



Je sais constituer une requète de manière à réduire la
liste des


fournisseurs à ceux du service donc si "mode-achat" <>
NULL.


De plus ceux pour lequel le "mode-achat" est 2 , je
concatene le


"nom_fournisseur" et la "ville".

J'obtiens alors la liste compléte des fournisseurs.

Mon soucis est alors de classer celle ci de telle
manière que les


fournisseurs soient en ordre alphabétique sur "nom-
fournisseur" et ensuite


sur ville.
Sachant que -difficulté supplémentaire- pour ceux
de "mode achat" = 2, on


trouve les cas suivants pour la même ville :

a) nom_fournisseur = "EdF"
b) nom_fournisseur = "EdF agence
commerciale" ou "EdF


unité xxx"


Et je voudrais obtenir un classement tel que ci-
dessous :



ANATOLE 1
BEATRICE 3
BERNARD 1
CHARLES 2
...........
EdF Amiens 2
EdF Boulogne 2
EdF agence ..Boulogne 2
EdF Calais 2
.............
FT Boulogne 2
FT agence.... Boulogne 2
...............
GASTON 3
HECTOR 1


En fait seul les fournisseurs de "mode-achat" 2 posent
un Pb .




Merci pour votre aide.
Jean-Paul B.





.




Avatar
Eric
j'ai essayé pas mal de trucs mais à mon avis faut passer à
de la programmation car je vois mal comment faire ça
qu'avec du sql. Mais bon, je vais pas attaquer ça
maintenant mais suivre l'évolution de la discussion.

Eric

-----Message d'origine-----
eh oui, peut etre en trichant, en créant un champ sur 3
premiers caractéres :o((


--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Eric" a écrit dans
le message de news: c11101c3ed6c$5aba3730

$
Hi !
Pas simple je crois car "EDF agence" Boulogne s'affichera
après "EDF" Calais

;-)
Eric
-----Message d'origine-----
bonjour
il faut mettre les champs dans l'ordre de tri
nom tri
ville tri
code tri
concatené non trié

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Bataille Jean-Paul" a écrit
dans le message de news: 4024b727$0$28106

$
Bjr,

Je dispose d'une liste de fournisseur entreprise, avec
les champs -entre


autres- "nom_fournisseur","ville" et "mode-achat".
Ce champ "mode-achat" présente 3 valeurs, disons 1,2 et
3 pour les


fournisseurs concernant mon service, sinon il reste à
NULL.



Je sais constituer une requète de manière à réduire la
liste des


fournisseurs à ceux du service donc si "mode-achat" <>
NULL.


De plus ceux pour lequel le "mode-achat" est 2 , je
concatene le


"nom_fournisseur" et la "ville".

J'obtiens alors la liste compléte des fournisseurs.

Mon soucis est alors de classer celle ci de telle
manière que les


fournisseurs soient en ordre alphabétique sur "nom-
fournisseur" et ensuite


sur ville.
Sachant que -difficulté supplémentaire- pour ceux
de "mode achat" = 2, on


trouve les cas suivants pour la même ville :

a) nom_fournisseur = "EdF"
b) nom_fournisseur = "EdF agence
commerciale" ou "EdF


unité xxx"


Et je voudrais obtenir un classement tel que ci-
dessous :



ANATOLE 1
BEATRICE 3
BERNARD 1
CHARLES 2
...........
EdF Amiens 2
EdF Boulogne 2
EdF agence ..Boulogne 2
EdF Calais 2
.............
FT Boulogne 2
FT agence.... Boulogne 2
...............
GASTON 3
HECTOR 1


En fait seul les fournisseurs de "mode-achat" 2 posent
un Pb .




Merci pour votre aide.
Jean-Paul B.





.




.





Avatar
Vincent Lascaux
ANATOLE 1
BEATRICE 3
BERNARD 1
CHARLES 2
...........
EdF Amiens 2
EdF Boulogne 2
EdF agence ..Boulogne 2
EdF Calais 2
.............
FT Boulogne 2
FT agence.... Boulogne 2
...............
GASTON 3
HECTOR 1


La logique de ce classement, c'est que "EdF" et "EdF agence" doivent être
dans le même "groupe", et doivent donc être classés à côté. La question
qu'il faut donc se poser est "comment on sait que deux fournisseurs sont
dans le même groupe ?"
Une possibilité aurait été de stoquer dans la base de donnée les groupes.

--
Vincent

Avatar
Anor
Bonjour,

Eric :
| j'ai essayé pas mal de trucs mais à mon avis faut passer à
| de la programmation car je vois mal comment faire ça
| qu'avec du sql. Mais bon, je vais pas attaquer ça
| maintenant mais suivre l'évolution de la discussion.
|
| Eric


Tu peux faire un tri (champ non affiché) dans ta requête comme ceci

Order By EpurerAgence([LeChampAgence])

en fonction du résultat de la fonction ci-dessous
(à améliorer peut-être un peu ;-))

Function EpurerAgence(strTexte As String) As String
Dim Position As Integer
If Len(strTexte) > 0 Then
For Position = 1 To Len(strTexte)
If Mid$(strTexte, Position, 8) = " Agence " Then
EpurerAgence = Left(strTexte, Position) & _
Right(strTexte, _
Len(strTexte) - Position - 7)
Exit Function
End If
Next Position
End If
End Function


--
à+
Arnaud
--------------------------------------------------
Conseils d'utilisation : http://users.skynet.be/mpfa/
Access Memorandum : http://memoaccess.free.fr
/Réponses souhaitées sur ce forum, merci/
--------------------------------------------------
Avatar
Pierre CFI [mvp]
dis donc, mon petit anor, ou tu étais toi aussi, les mvp et ceux qui devraient l'étre , ont ils eu droit à des vacances aux caraibes
sans moi ????

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Anor" <http://memoaccess.free.fr/anor/email.htm> a écrit dans le message de news:
Bonjour,

Eric :
| j'ai essayé pas mal de trucs mais à mon avis faut passer à
| de la programmation car je vois mal comment faire ça
| qu'avec du sql. Mais bon, je vais pas attaquer ça
| maintenant mais suivre l'évolution de la discussion.
|
| Eric


Tu peux faire un tri (champ non affiché) dans ta requête comme ceci

Order By EpurerAgence([LeChampAgence])

en fonction du résultat de la fonction ci-dessous
(à améliorer peut-être un peu ;-))

Function EpurerAgence(strTexte As String) As String
Dim Position As Integer
If Len(strTexte) > 0 Then
For Position = 1 To Len(strTexte)
If Mid$(strTexte, Position, 8) = " Agence " Then
EpurerAgence = Left(strTexte, Position) & _
Right(strTexte, _
Len(strTexte) - Position - 7)
Exit Function
End If
Next Position
End If
End Function


--
à+
Arnaud
--------------------------------------------------
Conseils d'utilisation : http://users.skynet.be/mpfa/
Access Memorandum : http://memoaccess.free.fr
/Réponses souhaitées sur ce forum, merci/
--------------------------------------------------




Avatar
Anor
Bonjour mon petit Pierrot d'Amour
J'étais un peu là mais un peu las aussi ...

--
à+
Arnaud
--------------------------------------------------
Conseils d'utilisation : http://users.skynet.be/mpfa/
Access Memorandum : http://memoaccess.free.fr
/Réponses souhaitées sur ce forum, merci/
--------------------------------------------------

Pierre CFI [mvp] :
| dis donc, mon petit anor, ou tu étais toi aussi, les mvp et ceux qui
| devraient l'étre , ont ils eu droit à des vacances aux caraibes sans
| moi ????
Avatar
Pierre CFI [mvp]
Euh la 'comme on dit en mayenne) , donc tu n'es pas las d'étre là, la , çà roule

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Anor" <http://memoaccess.free.fr/anor/email.htm> a écrit dans le message de news:
Bonjour mon petit Pierrot d'Amour
J'étais un peu là mais un peu las aussi ...

--
à+
Arnaud
--------------------------------------------------
Conseils d'utilisation : http://users.skynet.be/mpfa/
Access Memorandum : http://memoaccess.free.fr
/Réponses souhaitées sur ce forum, merci/
--------------------------------------------------

Pierre CFI [mvp] :
| dis donc, mon petit anor, ou tu étais toi aussi, les mvp et ceux qui
| devraient l'étre , ont ils eu droit à des vacances aux caraibes sans
| moi ????





Avatar
Bataille Jean-Paul
En fait le "groupe" 2 est celui où les fournisseurs sont en particulier EdF
et FT avec maintes agences ce pourquoi je distingue par la "Ville"
pour les combobox, mais dans une même ville il peut y avoir plusieurs
adresse ce que je symbolisais par agence ...
Pour les groupes 1 et 3 il n'y a pas de Pb particulier.

merci pour votre participation à cette discussion.

JP



"Vincent Lascaux" a écrit dans le message de
news:4024d72b$0$28112$
ANATOLE 1
BEATRICE 3
BERNARD 1
CHARLES 2
...........
EdF Amiens 2
EdF Boulogne 2
EdF agence ..Boulogne 2
EdF Calais 2
.............
FT Boulogne 2
FT agence.... Boulogne 2
...............
GASTON 3
HECTOR 1


La logique de ce classement, c'est que "EdF" et "EdF agence" doivent être
dans le même "groupe", et doivent donc être classés à côté. La question
qu'il faut donc se poser est "comment on sait que deux fournisseurs sont
dans le même groupe ?"
Une possibilité aurait été de stoquer dans la base de donnée les groupes.

--
Vincent