Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1446 connectés 

  FORUM HardWare.fr
  Programmation

  [ASP][SQL] comment faire un SELECT DISTINCT en ayant plusieurs champs?

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Page Précédente
Auteur Sujet :

[ASP][SQL] comment faire un SELECT DISTINCT en ayant plusieurs champs?

n°58059
duch
Posté le 06-09-2001 à 14:49:04  profilanswer
 

dans une table je peux avoir plusieurs fois le même mail, donc pour récupérer une liste de mail unique je fais :  
sql = "SELECT DISTINCT mail FROM liste WHERE mail LIKE '%@%'"
 
le blème c'est que comme ça je ne récupère que "mail" dans mon rs, or j'aimerais avoir le contenu des autres champs, mais j'y arrive pô, comment kon fait?

mood
Publicité
Posté le 06-09-2001 à 14:49:04  profilanswer
 

n°58070
duch
Posté le 06-09-2001 à 15:03:09  profilanswer
 

si je fais :
 
sql = "SELECT DISTINCT mail,prenom,nom FROM liste WHERE mail LIKE '%@%'"
 
ça me renvois toute la liste :gun:

 

[edtdd]--Message édité par duch--[/edtdd]

n°58073
jenner
Posté le 06-09-2001 à 15:03:57  profilanswer
 

select distinct XXX, AAA, ZZZ from table;

n°58075
_epegasus_
Posté le 06-09-2001 à 15:05:45  profilanswer
 

Bah c logique ! Si tu lui demande de te renvoyer tous les groupes (nom,prenom,email) different l'un de l'autre, c normal qu'il te renvoit toute les lignes puisqu'elle doivent toutes etre differente sur au moins un des champs !
 
Kes ke tu veux faire exactement ?

n°58076
duch
Posté le 06-09-2001 à 15:07:01  profilanswer
 

bah je veux une liste tous les gens dont les mails sont uniques, mais je peux qd même pouvoir récupérer leur nom et leur prénom, c'est tout.

n°58077
duch
Posté le 06-09-2001 à 15:07:18  profilanswer
 

jenner > ça ça marche pô

n°58079
duch
Posté le 06-09-2001 à 15:09:47  profilanswer
 

sinon, y'a la méthode barbare, je fais d'abord un select distinct sur les mails, et ensuite je fais une autre requête avec une clause WHERE mail = "&rs.fields("mail" ).value
 
mais y'a sans dout plus propre non?

n°58080
_epegasus_
Posté le 06-09-2001 à 15:13:36  profilanswer
 

Bah ca doit marcher normallement : "SELECT DISTINCT mail,prenom,nom FROM liste"

n°58082
duch
Posté le 06-09-2001 à 15:16:31  profilanswer
 

bah non ça marche pas, ça me renvois plus d'enregistrement qd je fais
 
sql = "SELECT DISTINCT mail,prenom,nom FROM liste WHERE mail LIKE '%@%'"  
 
que qd je fais
 
sql = "SELECT DISTINCT mail FROM liste WHERE mail LIKE '%@%'"  
 
c'est pô ça que je veux, moi je veux le même nb d'enregistrements
 
renvois moi tous les champs ou mail est unique mais je veux qd même nom et prénom.

n°58088
duch
Posté le 06-09-2001 à 15:39:33  profilanswer
 

pû personne?

mood
Publicité
Posté le 06-09-2001 à 15:39:33  profilanswer
 

n°58091
FLY LM
Posté le 06-09-2001 à 15:45:58  profilanswer
 

Tu peux toujours faire ta requête selectionnant le mail, le nom et le prenom et trier en ASP à défaut de pouvoir utiliser DISTINCT... NON ???

 

[edtdd]--Message édité par fly lm--[/edtdd]

n°58098
haloween
Posté le 06-09-2001 à 15:53:29  profilanswer
 

bah quand tu fais
select distinct nom,email from machin
 
=> s'il ya deux noms différents mais qui ont le même email ça va sortir deux lignes. LOGIQUE non ? Comment tu fais à la main ?  
 
DISTINCT ici veut dire s'il ya deux lignes qui ont même nom et même email eh bah ça sort 1 seule ligne

n°58101
duch
Posté le 06-09-2001 à 15:58:01  profilanswer
 

merci de me répeter 20 fois la même chose mais j'avais compris :D
 
si DISTINCT ne fonctionne pas pour ça quelle instruvtion pourrait fonctionner ?

n°58103
FLY LM
Posté le 06-09-2001 à 16:01:21  profilanswer
 

duch a écrit a écrit :

merci de me répeter 20 fois la même chose mais j'avais compris :D
 
si DISTINCT ne fonctionne pas pour ça quelle instruvtion pourrait fonctionner ?  




 
Tu peux faire le trie en ASP, facile NON ???

n°58106
duch
Posté le 06-09-2001 à 16:03:06  profilanswer
 

bon ben si y'a pas d'autre moyen, je prendrais la méthode bourrin :sarcastic:

n°58108
Fred999
Rabat-joie
Posté le 06-09-2001 à 16:05:53  profilanswer
 

Je comprends pas ton problème. Je comprends les solutions proposées, mais vu la question que tu poses enfin bref TU POURRAIS PAS DONNER UN EXEMPLE??? :crazy:

n°58110
FLY LM
Posté le 06-09-2001 à 16:09:02  profilanswer
 

C'est pas si bourrin que ça, je sais ce serait mieux d'avoir directement le résultat en SQL... J'ai essayer de jouer avec DISTINCT mais comme toi ca fait pas ce qu'on attends et c'est normal, je trouve pas...Mais si tu fais une première requête en triant par mail, c'est d'autant plus simple pour ensuite refaire un trie en ASP (quoique l'ASP, connait pas bien...)...
@+

n°58111
alknon
Posté le 06-09-2001 à 16:14:29  profilanswer
 

SELECT mail,prenom,nom FROM liste WHERE mail LIKE '%@%'" GROUP BY mail,prenom,nom

n°58232
FLY LM
Posté le 07-09-2001 à 10:08:45  profilanswer
 

Pour Infos, le DISTINCT est extrêment gourmand en ressource !!

n°1802436
Sarah Bloo​dthicket
Posté le 20-10-2008 à 16:13:46  profilanswer
 

Il est pourtant clair son problème.
 
Vous avez un fichier qui contient plusieurs rubriques :
 
[ ID ] [ CODE ] [ LIBELLE ]
  1         A        LIBELLE1  
  2         B        LIBELLE2
  3         C        LIBELLE3
  4         A        LIBELLE4  
  5         A        LIBELLE5
  6         D        LIBELLE6
 
Ce qu'il veut, c'est faire un distinct sur le CODE, tout en ayant accès aux rubriques.
Chose impossible en SQL avec distinct.  
La solution est d'utiliser le groupe by
 
Ex:
 
select ID,CODE,LIBELLE from FICHIER where ... GROUP BY CODE
 
De cette manière la requète permet de faire Requète.ID ou Requète.CODE, etc...
 
Et le résultat retourné serra le suivant :
 
1 A LIBELLE1
2 B LIBELLE2
3 C LIBELLE3
6 D LIBELLE6
 
 
 
 
 
 

n°1802465
tet2neu
emmerdeur
Posté le 20-10-2008 à 17:00:55  profilanswer
 

heureusement que tu es là, il aura quand même attendu 7 ans avant d'avoir la réponse :jap:

 

edit : et sinon, ta requête elle fonctionne pas


Message édité par tet2neu le 20-10-2008 à 17:02:51
n°1802893
Sarah Bloo​dthicket
Posté le 21-10-2008 à 17:51:40  profilanswer
 

Ca servira au prochain qui se posait la question ^^  
 
C'est à dire comme moi il y a quelques jours...
 
ps: je ne vois le problème de ma requète... ^^ si c'est à cause des "..." à vous d'adapter.

n°1802913
tet2neu
emmerdeur
Posté le 21-10-2008 à 18:13:35  profilanswer
 

ta requête ne fonctionne pas car elle renvoie tout le contenu de la table : pour chaque code tu auras tous les ID et tous les libellés, donc tout.

 

Et enrichir la clause where n'y changera rien, à moins de filtrer avec une liste explicite de libellés ou d'ID, ce qui n'a plus aucun intérêt.

 

De plus, la question posée par l'auteur du topic n'est vraiment pas claire.

 


je peux avoir plusieurs fois le même mail

 

je veux une liste tous les gens dont les mails sont uniques, mais je peux qd même pouvoir récupérer leur nom et leur prénom

 


En fait, il veut un seul enregistrement par mail alors qu'un mail peut être associé à plusieurs couples nom/prénom. Ce qui est tout à fait impossible à moins de n'en choisir qu'un de façon arbitraire (un min(NOM) ???)

 

Bref, si personne n'a proposé de solution correcte ici, c'est que le problème n'a jamais été exposé clairement ;)

Message cité 1 fois
Message édité par tet2neu le 21-10-2008 à 18:20:37
n°1803017
ionik
Posté le 22-10-2008 à 07:46:40  profilanswer
 

SELECT mail,prenom,nom FROM liste GROUP BY mail
 
?


---------------
Recette cookeo Recette de cuisine
n°1803020
tet2neu
emmerdeur
Posté le 22-10-2008 à 07:55:05  profilanswer
 

non
 
et STOP !

n°1814968
Sarah Bloo​dthicket
Posté le 21-11-2008 à 14:20:29  profilanswer
 

tet2neu : "ta requête ne fonctionne pas car elle renvoie tout le contenu de la table : pour chaque code tu auras tous les ID et tous les libellés, donc tout."
 
Heu... je rappel quand même la question initiale de duch:
 
"le blème c'est que comme ça je ne récupère que "mail" dans mon rs, or j'aimerais avoir le contenu des autres champs, mais j'y arrive pô, comment kon fait?"
 
Je traduis donc pour ceux qui ne savent pas lire...
-> Je souhaite effectuer un distinct sur une rubrique tout en ayant acces à TOUS les autres champs.
 
Je remets donc la solution (qui fonctionne très bien):
select ID,CODE,LIBELLE from FICHIER where ... GROUP BY CODE  
 
Par conséquent : Oui, ionik. ^^

n°1814975
Sarah Bloo​dthicket
Posté le 21-11-2008 à 14:24:17  profilanswer
 

"non et STOP !"
 
ps1 : le titre en dessous de ton pseudo te scier à ravir.
ps2 : si Ionik pose la question, c'est que le sujet est toujours utile.
 

n°1815088
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 21-11-2008 à 17:02:37  profilanswer
 

pour info :
- Sarah Bloothicket et Ionik : tout ce que feront vos requetes, c'est retourner une erreur du genre "id et libelle n'est pas valide car elle ne sont pas contenues dans une fonction d'aggregation ou dans la clause GROUP BY"
donc, il faut rectifier votre requete comme ceci :  
select ID,CODE,LIBELLE from FICHIER where ... GROUP BY ID, CODE, LIBELLE  
- une fois rectifiée de la sorte, on exécute la requete, et on s'aperçoit que toutes les lignes sont retournées. pourquoi ? parce que que les libellés sont différents en face des codes. comment voulez vous regrouper par exemple les lignes 1 et 4 sous le code A alors que la valeur du libellé est différente ?
 
faire un GROUP BY dans un SELECT qui ne possède aucune fonction d'agrégation revient à faire un SELECT DISTINCT. donc, Sarah Bloodthicket, merci de ne pas soutenir que ta requête fonctionne alors que ce n'est pas du tout le cas.


---------------
J'ai un string dans l'array (Paris Hilton)
n°1815120
tet2neu
emmerdeur
Posté le 21-11-2008 à 18:20:47  profilanswer
 

Sarah Bloodthicket a écrit :

tet2neu : "ta requête ne fonctionne pas car elle renvoie tout le contenu de la table : pour chaque code tu auras tous les ID et tous les libellés, donc tout."

 

Heu... je rappel quand même la question initiale de duch:

 

"le blème c'est que comme ça je ne récupère que "mail" dans mon rs, or j'aimerais avoir le contenu des autres champs, mais j'y arrive pô, comment kon fait?"

 

Je traduis donc pour ceux qui ne savent pas lire...
-> Je souhaite effectuer un distinct sur une rubrique tout en ayant acces à TOUS les autres champs.

 

Je remets donc la solution (qui fonctionne très bien):
select ID,CODE,LIBELLE from FICHIER where ... GROUP BY CODE

 

Par conséquent : Oui, ionik. ^^


re "non"

 

quand je dis que la requête ramène toute la table je ne parle pas du nombre de colonnes mais du nombre de ligne. Bref, la requête ne fait aucun distinct.

 

Dans ton exemple, soit le SGBD ramène tout le contenu de la table (donc aucun DISTINCT), soit la requête plante lamentablement (ce dont parle Harko). En aucun cas le résultat ne sera celui que tu donnes.
Et "stop" parce que la question est tellement peu claire qu'aucune solution acceptable ne peut être donnée.


Message édité par tet2neu le 21-11-2008 à 18:28:27
n°1816459
Sarah Bloo​dthicket
Posté le 25-11-2008 à 15:38:06  profilanswer
 

Citation :

Sarah Bloodthicket, merci de ne pas soutenir que ta requête fonctionne alors que ce n'est pas du tout le cas.


 
Heuu... si je me suis permis de poster ici, c'est parcque j'ai rencontré ce problème et que je pense avoir trouvé une solution.
Ce n'est pas mon genre de poster des solutions à la con. Mais qui sait? personne n'est parfait hein?
 
Donc dans le doute... je suis retourné dans mon code et j'ai vérifié...et vérifié... et vérifié encore.
He ben désolé d'insister lourdement (n'en déplaise à certain), mais chez moi sa fonctionne.
 
J'ai environ 1500 articles parmis lesquels je peux avoir des doublons sur le CODE puisqu' un même article peut exister en dépense et en recette.  
 
exemple:
 
[CODE]   [LIB]      [SENS]
205        article1      D
205        article1      R
2111      article2      D
2111      article2      R
2183      article3      D
2183      article3      R
 
Mon objectif était d'afficher la liste des articles existant, mais sans les doublons puisque dans le même fichier j'ai un enregistrement pour Dépenses et Recettes.
J'ai donc fait la requète suivante:
 
"select CODE, LIB from FICHIER where group by CODE".
 
 

Citation :

tout ce que feront vos requetes, c'est retourner une erreur du genre "id et libelle n'est pas valide car elle ne sont pas contenues dans une fonction d'aggregation ou dans la clause GROUP BY"


 
Bah non...désolé de faire mon gros lourd, mais pas chez moi.
Chez moi ça me retourne ça :
 
 [CODE]   [LIB]      
205        article1    
2111      article2      
2183      article3      
 
Reproduit sur une requète SQL en Windev12.  
Je ne soutiens donc pas que ça fonctionne chez tout le monde, je dis juste que chez moi ça donne sa. Vlà.
 

n°1816461
Sarah Bloo​dthicket
Posté le 25-11-2008 à 15:42:18  profilanswer
 

Exact copier coller du code :
 
"select ivb12_art, ivb12_artlib  from bu_ivb12_m4xa where idbu_maquette = "+Oglobal:N_idbu_maquette+" and IVB12_SECTION="+FIV_B12.SEL_SECTION+" group by ivb12_art"
 
Seule différence: 2 malheureuses conditions dans le where

n°1816640
tet2neu
emmerdeur
Posté le 25-11-2008 à 19:36:30  profilanswer
 

J'ai bien compris que ton intention en postant ici était d'aider en partageant ton expérience. Rien de mal à cela, mais je ne peux pas te laisser dire que ta solution est bonne.

 

Encore une fois, la requête que tu proposes n'est pas correcte.
Lorsque tu fais un group by, tu dois retrouver dans ton select à la fois l'ensemble des champs composant le group by, et des fonctions d'agrégat comme count(), min(), max, sum() sur les autres champs...
Et rien d'autre.

 

Regardons, afin d'être plus clair, le problème initialement posé sur ce topic.

 

Nous avons une table qui contient des ensembles NOM / PRENOM / E-MAIL

 

On peut retrouver dans cette table le même e-mail avec des couples nom/prenom différents.

 

NOM  /  PRENOM  /  MAIL

 

Dupond / Jacques / jacquesd@hfr.fr
Dupont / Jacques / jacquesd@hfr.fr
Durand / Maurice / mauriced@clubic.com

 

La question posée est "comment récupérer les e-mail distinct, mais aussi les noms et prénoms"

 

je veux donc récupérer une seule fois "jacquesd@hfr.fr" mais je voudrais aussi le nom et le prénoms qui correspondent.
Or il y a 2 noms disponibles. Tu vois bien que nous avons un problème. Lequel récupérer ? On en a aucune idée puisque l'auteur du sujet n'a jamais donné de détail.

 


Deuxième problème.
La requête que tu proposes, appliquée à notre exemple donnerai :

 
Code :
  1. select
  2.   MAIL,
  3.   NOM,
  4.   PRENOM
  5. from MA_TABLE
  6. group by
  7.   MAIL
 

Si je teste cette requête sous sysbase, elle semble fonctionner. Mais le résultat est le suivant :
Dupond / Jacques / jacquesd@hfr.fr
Dupont / Jacques / jacquesd@hfr.fr
Durand / Maurice / mauriced@clubic.com

 

Donc en gros, le group by n'a servi à rien du tout. Pourquoi ? Parce que pour l'e-mail jacquesd@hfr.fr je dispose de 2 couples nom/prénom et que je ne dis pas à ma requête lequel choisir. Donc il sort les 2.

 

Si je teste cette requête sous Oracle, elle plante !
Pourquoi ? Parce que les champs NOM et PRENOM de mon select ne font pas partie du group by ET aucune fonction d'agrégat ne leur est associé.

 


Maintenant, et pour éviter que tu me prennes pour un con encore une fois en répétant "ma requête fonctionne très bien, regarde, avec ça ça marche !", regardons ton exemple de plus près.

 

Passons outre le fait que, syntaxiquement, ta requête pourra être rejetée par certains SGBD. Visiblement, pour le tiens, ça passe.
Concentrons nous sur le résultat.

 

Tu sélectionnes le code et le libellé, tu regroupes sur le codes, et tu obtiens bien la liste distincte des couples CODE/LIB.

 

Et bien vois-tu, rien d'anormal dans la mesure où dans ta tables, tu ne retrouves jamais 2 fois le même code avec 2 libellés différents.
On est donc pas du tout dans le cas du problème posé ici avec un e-mail associé avec 2 noms différents.

 

Dans ton cas, tu aurais dû faire la requête suivante select distinct CODE, LIB from FICHIER where ...
Le résultat aurait été identique et la requête correcte.

 

En conclusion, il ne s'agit pas de s'acharner sur toi par pure méchanceté. J'insiste sur le fait que ta requête est incorrecte. Elle ne respecte pas l'utilisation normale du group by.
J'espère avoir été un peu plus clair.


Message édité par tet2neu le 25-11-2008 à 19:44:12
n°1816684
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 25-11-2008 à 21:20:27  profilanswer
 

Sarah Bloodthicket a écrit :

[quote]
Reproduit sur une requète SQL en Windev12.  
Je ne soutiens donc pas que ça fonctionne chez tout le monde, je dis juste que chez moi ça donne sa. Vlà.
 


Bon, on va prendre le problème depuis le début : c'est quoi le SGBD que tu utilises ? parce qu'un SGBD qui ne gueule pas quand un GROUP BY est incomplet, j'en ai jamais vu (et j'en ai vu !)
Même cette grosse bouse d'Access plante avec ça...
Pour le reste, tet2neu a tout dit.


---------------
J'ai un string dans l'array (Paris Hilton)
n°1816686
tet2neu
emmerdeur
Posté le 25-11-2008 à 21:22:01  profilanswer
 

il me semble que sous sybase ASE ça plantait pas. Mais ça remonte un peu :D

n°1816975
Sarah Bloo​dthicket
Posté le 26-11-2008 à 13:31:46  profilanswer
 

Bon, he bien déjà merci pour cette réponse plus détaillée que les précédentes.
 

Citation :

Dans ton cas, tu aurais dû faire la requête suivante select distinct CODE, LIB from FICHIER where ...
Le résultat aurait été identique et la requête correcte.


 
He bien pas exactement, puisque j'ai eu le même soucis que Duch : avec un select distinct je n'arrivais pas à afficher toutes les rubriques de ma table tout en faisant le distinct (sur le code uniquement) en une seule requète. (obligé d'en faire 2).
Après il y a peut-etre une solution, mais je la connais pas.
 

Citation :

Elle ne respecte pas l'utilisation normale du group by. J'espère avoir été un peu plus clair.


 
Tout à fait! En gros, ça fonctionne dans mon cas, mais ça ne devrait pas.
Ce qui est bon à savoir puisqu'il est possible que je passe bientôt en oracle.
 

Citation :

Bon, on va prendre le problème depuis le début : c'est quoi le SGBD que tu utilises ?


 
Je suis en Hyperfile Client/Serveur.
La requète ne plante pas non plus lorsqu'elle est entrée "en test" directement dans le Centre de contrôle Hyperfile.  
Même comportement : il me retourne à chaque fois les enregistrements filtrés sur le code.
 

Citation :

tu ne retrouves jamais 2 fois le même code avec 2 libellés différents


 
Oui et non. Je complète un peu ma table :
 
[Code]  [Libellé]      [Sens]  [Libellé Service]
001      Libellé 001   D         Service A
001      Libellé 001   R         Service B
002      Libellé 002   D         Service C
...  
 
Dans ma table, il se pourrait cependant qu'il y ai des Libellés différents sur le Service.
Dans ce cas, ma requète semble sélectionner un des libellés au pif (chose qui dans mon cas ne me dérange pas).
 

Citation :

Je veux donc récupérer une seule fois "jacquesd@hfr.fr" mais je voudrais aussi le nom et le prénoms qui correspondent.
Or il y a 2 noms disponibles.


J'en reviens donc à ça :

Citation :

Dans ce cas, ma requète semble sélectionner un des libellés au pif


 
C'est peut-etre ce qu'il souhaitait après tout? :)
Dans ce cas ma réponse n'aurait pas été si stupide que ça... sauf que comme vous l'expliquez au dessus, elle n'est pas censée fonctionner sans renseigner le group by. Et en SQL je vous fais confiance, ce n'est pas mon domaine préféré :)
 
Donc la dessus, je m'incline...


Message édité par Sarah Bloodthicket le 26-11-2008 à 13:53:09
n°1817022
Sarah Bloo​dthicket
Posté le 26-11-2008 à 14:10:55  profilanswer
 

Citation :

Dans ce cas, ma requète semble sélectionner un des libellés au pif (chose qui dans mon cas ne me dérange pas).


 
Autant pour moi, j'avais une 2e procédure bien planquée qui se chargait de rapatrier le service...  :sweat:


Message édité par Sarah Bloodthicket le 26-11-2008 à 14:12:02
n°1817115
tet2neu
emmerdeur
Posté le 26-11-2008 à 15:30:50  profilanswer
 

Ah oui :D
Parce que si ton SGBD se met à choisir de son propre chef les enregistrements qui l'intéressent, c'est encore pire que ce que j'imaginais :D
 
Pour le DISTINCT, effectivement, si tu as d'autres champs derrière ça ne fonctionne pas :/

n°1821591
hisoka77
Posté le 03-12-2008 à 19:12:29  profilanswer
 

Bon pour rencontrer le même problème que le membre qui à posté la question initialement je comprend tout à fait sa question.

 

Je vais essayer de la reformuler :
Dans ma BDD il peut arriver que plusieurs entré ait le même champ A.
Or je ne veut sélectionner qu'une seul entré par champ A. (que ça me donne uniquement des champs A différent quoi)

 

Mais pour compliquer un peu les entrés dont le champ A est identique peuvent avoir trois autres champs de différent entre eux. (comme dans l'exemple ou plusieurs noms sont associés à seule une adresse email)

 

Peu m'importe comment ils sont choisis (aléatoirement par exemple) mais je préférais que l'entrée qui sera affiché parmi celle qui ont le même champ A soir celle pour qui la valeur du champ B serait la plus petite.

 

Donc comment dois-je faire?
(en php sous mysql)

 

Merci !


Message édité par hisoka77 le 03-12-2008 à 19:15:29
n°1835452
patrick72
Posté le 08-01-2009 à 10:42:45  profilanswer
 

Exemple:
 
[CODE]   [LIB]      [SENS]
205        article1      D
205        article1      R
2111      article2      D
2111      article2      R
2183      article3      D
2183      article3      R
 
requète :
 
"select CODE, min(LIB) LIB from FICHIER group by CODE".
 
et ça me retourne ça : (Oracle 9)
 
 [CODE]   [LIB]      
205        article1    
2111      article2      
2183      article3


Message édité par patrick72 le 08-01-2009 à 10:57:59
n°1906170
claudelana
Posté le 17-07-2009 à 14:43:22  profilanswer
 

J'ai un problème de selection avec un distinct qui ne veut pas faire ce que je voudrais.
N'étant pas un virtuose de la BDD et après une recherche sur le net je suis arrivé sur ce poste qui ne date pas d'hier :) Donc, je me suis
permis de poster mon souci ici en espèrant que quelqu'un veuille bien m'aider.
 
J'ai une table produit dans une base de données access qui est composée des champs suivant :
Tout les champs ne sont pas représentés ici (trop nombreux)
 
Numéro, Code_Article, Désignation_Article, Code_Rayon, Désignation_Rayon, Code_Famille, Désignation_Famille, Code_S_Famille, Désignation_S_Famille, Code_Fournisseur, Nom_Fournisseur, Libelle_de_la_Taille, Code_Couleur, Désignation_Couleur, Code_Fabricant, Désignation_Fabricant, Prix_Vente_TTC
...., etc.
 
Je voudrais imprimer une étiquette générique par produit (sur cette étiquette doit figurer plusieurs champs)
 
Je prends par exemple parmit tous les produits de la table des chaussures qui ont les même données dans tous les champs sauf pour les champs taille et couleur ( ces deux champs ne figurent pas sur l'étiquette)
 
(extrait de la table produit)
 
Num CodeArt DésignArt  DésignRayon DésignFam DésignSFam NFour       Taille   DésignCoul DésignFabr     Prix
07   00153    Chauhiver  Chaussures  Chaussons Velcros        ANDREA     32       Noir          Andrea      115,00
08   00153    Chauhiver  Chaussures  Chaussons Velcros        ANDREA     32.5    Marron       Andrea      115,00
09   00153    Chauhiver  Chaussures  Chaussons Velcros        ANDREA     33       Vert          Andrea 115,00
10   00153    Chauhiver  Chaussures  Chaussons Velcros        ANDREA     33.5    Rouge        Andrea 115,00
11   00153    Chauhiver  Chaussures  Chaussons Velcros        ANDREA     34       Blanc         Andrea 115,00
37   00154    Chauhiver  Chaussures  Chaussons Enfants        ANDREA     26       Marron       Andrea  41,00
38   00154    Chauhiver  Chaussures  Chaussons Enfants       ANDREA     27       Vert          Andrea  41,00
48   00157    Chauhiver  Chaussures  Chaussons Lacets        ANDREA     32       Rouge         Andrea 108,00
49   00157    Chauhiver  Chaussures  Chaussons Lacets        ANDREA     32.5     Noir           Andrea 108,00
50   00157    Chauhiver  Chaussures  Chaussons Lacets        ANDREA     33        Noir           Andrea 108,00
78   00162    Chauhiver  Chaussures  Chaussons Velcros       BORÉAL      2 UK     Vert           Boréal  78,90
79   00162    Chauhiver  Chaussures  Chaussons Velcros       BORÉAL      2.5 UK  Vert           Boréal  78,90
80   00162    Chauhiver  Chaussures  Chaussons Velcros       BORÉAL      3 UK     Vert           Boréal  78,90
 
 
J'ai essayé ceci "SELECT DISTINCT Code_Article FROM produit"
 
Mais ca ne me sort que le code article alors que je voudrais avoir plusieurs champ d'inscris sur mon étiquette.
 
Si cela était possible j'aurais aimé quelque chose comme çà ( mais ce ne marche pas!) "SELECT (DISTINCT Code_Article), champ1, champ2, champ3, etc... FROM produits" ou ceci "SELECT (DISTINCT Code_Article), * FROM produits"  
 
 
j'ai essayé ceci également "SELECT DISTINCT Code_Article, champ1, champ2, champ3 FROM produit" mais ca me renvoi pas tout comme je le voudrais.
 
pour avoir comme résultat ( par exemple) une étiquette unique du genre :
 
Num CodeArt DésignArt   DésignRayon DésignFam DésignSFam NFour      Taille DésignCoul     DésignFabr       Prix
10    00153   Chaushiver Chaussures Chaussons Velcros        MARTIN     32       Bleu          MARTIN JO      115,00
38    00154   Chaushiver Chaussures Chaussons Enfants        ANDREA     33      Vert          Andrea             41,00
50    00157   Chaushiver Chaussures Chaussons Lacets         ANDREA    33       Noir           Andrea           108,00
78    00162   Chaushiver Chaussures Chaussons Velcros        BORÉAL     2 UK    Vert          Boréal              78,90
 
Le produit choisi dans le select distinct code_article m'importe peut car les champs sont presque tous identique et ceux qui sont différent ne me servent pas.
 
 
Si quelqu'un a une idée?
 
Merci d'avance

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [ASP][SQL] comment faire un SELECT DISTINCT en ayant plusieurs champs?

 

Sujets relatifs
Asp detection de champ vide dans un recordset[ASP]Date
[Asp / VB ] Connexion distante a une base de donnée[ASP] Pilote ODBC Microsoft Access erreur ...
[ASP]Fonction replaceqcm, à plusieurs réponses !?
ASP - Arrondir.. ou tronquage partie entière...[MYSQL] Comment faire si deux champs portent le même nom?
[ASP][SQL] une requête pour connaitre la structure d'une table ??? 
Plus de sujets relatifs à : [ASP][SQL] comment faire un SELECT DISTINCT en ayant plusieurs champs?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR