OVH Cloud OVH Cloud

La fonction distinct

14 réponses
Avatar
Franky01
Rebonjour !

Je voudrais enlever les doublons grâce à la fonction distinct, elle marche
très bien lorsque je fait un select sur un seul champ.
Cependant, lorsque je fais un select sur plusieurs champs de la table,
access me fait une erreur. Par ex :

Select Nom, distinct(email)
from client

ça ne marche pas....

Par contre je viens de m'apercevoir que ça marche (bisarre) si je marque :

Select distinct(email), nom
from client

4 réponses

1 2
Avatar
Rv
Salut,

Je pense que le problème est d'avantage sur la logique de la demande que
sur la syntaxe SQL. En effet si l'on "sélectionne les champs en distinguant
selon le champs email" cela suppose qu'il y plusieurs enregistrements
distincts par ailleurs mais qui ont le même email. A partir de là quel
enregistrement doit-on retourner parmis les plusieurs?
La solution proposé à la fin du fil prend l'option de ressortir le premier
rencontré (selon quel ordre???). On pourrait aussi bien retourner le dernier
ou ...

A+

Rv


"Franky01" a écrit dans le message de
news:
Alors j'ai une table client :

J'ai les champs suivants :

raison sociale
dirigeant
adresse
cp
ville
email

et je veux selectionner tous les champs mais en distinguant selon le champ
email, c'est à dire que je ne veux pas de doublons selon le champ email.

Je pensais à :

Select [raison sociale], dirigeant, adresse, cp, ville, distinct(email)
from liste

Mais ça ne marche pas....

Merci pour ton aide Thierry...

Franky


Bonjour Franky01 !

Donne-nous le SQL de ta requête et dis-nous exactement ce que tu veux,
ça nous aidera peut-être...

Message du mardi 06/11/2007

Alors personne ne sait comment faire pour que la fonction distincte
fonctionne malgré que j'appelle plusieurs champs....


par contre, ça ne remarche plus si je rajoute un champ, c'est à dire à
partir de 3 champs, ça ne fonctionne plus.....


Rebonjour !

Je voudrais enlever les doublons grâce à la fonction distinct, elle
marche
très bien lorsque je fait un select sur un seul champ.
Cependant, lorsque je fais un select sur plusieurs champs de la
table,
access me fait une erreur. Par ex :

Select Nom, distinct(email)
from client

ça ne marche pas....

Par contre je viens de m'apercevoir que ça marche (bisarre) si je
marque :

Select distinct(email), nom
from client





--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info











Avatar
Franky01
Donc la requete proposée par Michel_D ressort le premier résultat de la table
mais est ce qu'on peut m'expliquer la requete point par point, je comprends
pas pourquoi il y a un group by.....


Salut,

Je pense que le problème est d'avantage sur la logique de la demande que
sur la syntaxe SQL. En effet si l'on "sélectionne les champs en distinguant
selon le champs email" cela suppose qu'il y plusieurs enregistrements
distincts par ailleurs mais qui ont le même email. A partir de là quel
enregistrement doit-on retourner parmis les plusieurs?
La solution proposé à la fin du fil prend l'option de ressortir le premier
rencontré (selon quel ordre???). On pourrait aussi bien retourner le dernier
ou ...

A+

Rv


"Franky01" a écrit dans le message de
news:
Alors j'ai une table client :

J'ai les champs suivants :

raison sociale
dirigeant
adresse
cp
ville
email

et je veux selectionner tous les champs mais en distinguant selon le champ
email, c'est à dire que je ne veux pas de doublons selon le champ email.

Je pensais à :

Select [raison sociale], dirigeant, adresse, cp, ville, distinct(email)
from liste

Mais ça ne marche pas....

Merci pour ton aide Thierry...

Franky


Bonjour Franky01 !

Donne-nous le SQL de ta requête et dis-nous exactement ce que tu veux,
ça nous aidera peut-être...

Message du mardi 06/11/2007

Alors personne ne sait comment faire pour que la fonction distincte
fonctionne malgré que j'appelle plusieurs champs....


par contre, ça ne remarche plus si je rajoute un champ, c'est à dire à
partir de 3 champs, ça ne fonctionne plus.....


Rebonjour !

Je voudrais enlever les doublons grâce à la fonction distinct, elle
marche
très bien lorsque je fait un select sur un seul champ.
Cependant, lorsque je fais un select sur plusieurs champs de la
table,
access me fait une erreur. Par ex :

Select Nom, distinct(email)
from client

ça ne marche pas....

Par contre je viens de m'apercevoir que ça marche (bisarre) si je
marque :

Select distinct(email), nom
from client





--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info














Avatar
Rv
Pas le premier enregistrement de la table! Prenons un exemple simplifié
table1(nom, mail)

nom mail
n1
n2
n3
n4
n4
n3
n5
n6


La requête

SELECT mail, First(nom)
FROM table1
GROUP BY mail

effectue des regroupements sur le champs mail. En gros en interne elle
regroupe les enregistrements ainsi:
n1
n2
n3

n3

n4
n4
n6

n5


puis elle renvoie le premier de chaque groupe:
n1
n3
n4
n5

J'ai quand même une difficulté avec la notion de premier car elle implique
un ordre. Or dans cette requête il n'y a pas de clause ORDER BY donc il
s'agit d'un ordre implicite (sans doute l'ordre dans lequel on rencontre les
enregistrements dans la table si l'on ne précise pas d'ordre!!) et cela me
semble peu fiable.

A+

Rv

"Franky01" a écrit dans le message de
news:
Donc la requete proposée par Michel_D ressort le premier résultat de la
table
mais est ce qu'on peut m'expliquer la requete point par point, je
comprends
pas pourquoi il y a un group by.....


Salut,

Je pense que le problème est d'avantage sur la logique de la demande
que
sur la syntaxe SQL. En effet si l'on "sélectionne les champs en
distinguant
selon le champs email" cela suppose qu'il y plusieurs enregistrements
distincts par ailleurs mais qui ont le même email. A partir de là quel
enregistrement doit-on retourner parmis les plusieurs?
La solution proposé à la fin du fil prend l'option de ressortir le
premier
rencontré (selon quel ordre???). On pourrait aussi bien retourner le
dernier
ou ...

A+

Rv


"Franky01" a écrit dans le message
de
news:
Alors j'ai une table client :

J'ai les champs suivants :

raison sociale
dirigeant
adresse
cp
ville
email

et je veux selectionner tous les champs mais en distinguant selon le
champ
email, c'est à dire que je ne veux pas de doublons selon le champ
email.

Je pensais à :

Select [raison sociale], dirigeant, adresse, cp, ville, distinct(email)
from liste

Mais ça ne marche pas....

Merci pour ton aide Thierry...

Franky


Bonjour Franky01 !

Donne-nous le SQL de ta requête et dis-nous exactement ce que tu veux,
ça nous aidera peut-être...

Message du mardi 06/11/2007

Alors personne ne sait comment faire pour que la fonction distincte
fonctionne malgré que j'appelle plusieurs champs....


par contre, ça ne remarche plus si je rajoute un champ, c'est à
dire à
partir de 3 champs, ça ne fonctionne plus.....


Rebonjour !

Je voudrais enlever les doublons grâce à la fonction distinct,
elle
marche
très bien lorsque je fait un select sur un seul champ.
Cependant, lorsque je fais un select sur plusieurs champs de la
table,
access me fait une erreur. Par ex :

Select Nom, distinct(email)
from client

ça ne marche pas....

Par contre je viens de m'apercevoir que ça marche (bisarre) si je
marque :

Select distinct(email), nom
from client





--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info
















Avatar
Franky01
merci pour l'explication !


Pas le premier enregistrement de la table! Prenons un exemple simplifié
table1(nom, mail)

nom mail
n1
n2
n3
n4
n4
n3
n5
n6


La requête

SELECT mail, First(nom)
FROM table1
GROUP BY mail

effectue des regroupements sur le champs mail. En gros en interne elle
regroupe les enregistrements ainsi:
n1
n2
n3

n3

n4
n4
n6

n5


puis elle renvoie le premier de chaque groupe:
n1
n3
n4
n5

J'ai quand même une difficulté avec la notion de premier car elle implique
un ordre. Or dans cette requête il n'y a pas de clause ORDER BY donc il
s'agit d'un ordre implicite (sans doute l'ordre dans lequel on rencontre les
enregistrements dans la table si l'on ne précise pas d'ordre!!) et cela me
semble peu fiable.

A+

Rv

"Franky01" a écrit dans le message de
news:
Donc la requete proposée par Michel_D ressort le premier résultat de la
table
mais est ce qu'on peut m'expliquer la requete point par point, je
comprends
pas pourquoi il y a un group by.....


Salut,

Je pense que le problème est d'avantage sur la logique de la demande
que
sur la syntaxe SQL. En effet si l'on "sélectionne les champs en
distinguant
selon le champs email" cela suppose qu'il y plusieurs enregistrements
distincts par ailleurs mais qui ont le même email. A partir de là quel
enregistrement doit-on retourner parmis les plusieurs?
La solution proposé à la fin du fil prend l'option de ressortir le
premier
rencontré (selon quel ordre???). On pourrait aussi bien retourner le
dernier
ou ...

A+

Rv


"Franky01" a écrit dans le message
de
news:
Alors j'ai une table client :

J'ai les champs suivants :

raison sociale
dirigeant
adresse
cp
ville
email

et je veux selectionner tous les champs mais en distinguant selon le
champ
email, c'est à dire que je ne veux pas de doublons selon le champ
email.

Je pensais à :

Select [raison sociale], dirigeant, adresse, cp, ville, distinct(email)
from liste

Mais ça ne marche pas....

Merci pour ton aide Thierry...

Franky


Bonjour Franky01 !

Donne-nous le SQL de ta requête et dis-nous exactement ce que tu veux,
ça nous aidera peut-être...

Message du mardi 06/11/2007

Alors personne ne sait comment faire pour que la fonction distincte
fonctionne malgré que j'appelle plusieurs champs....


par contre, ça ne remarche plus si je rajoute un champ, c'est à
dire à
partir de 3 champs, ça ne fonctionne plus.....


Rebonjour !

Je voudrais enlever les doublons grâce à la fonction distinct,
elle
marche
très bien lorsque je fait un select sur un seul champ.
Cependant, lorsque je fais un select sur plusieurs champs de la
table,
access me fait une erreur. Par ex :

Select Nom, distinct(email)
from client

ça ne marche pas....

Par contre je viens de m'apercevoir que ça marche (bisarre) si je
marque :

Select distinct(email), nom
from client





--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info



















1 2