Comment faire un SELECT DISTINCT en ayant plusieurs champs?

Résolu
mailliam Messages postés 261 Date d'inscription mardi 2 juillet 2002 Statut Membre Dernière intervention 10 mars 2014 - 7 févr. 2010 à 21:22
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 - 20 févr. 2010 à 06:37
Hello les Loulous !

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 matable WHERE mail"

Mon problème c'est que comme ça je ne récupère que "mail" et en fait j'aimerais pouvoir avoir le contenu des autres champs, comment on fait?
On ne peut pas utiliser DISTINCT? Comment faire autrement

(car sql = "SELECT DISTINCT mail,prenom,nom FROM matable WHERE mail ca me renvoie toute la liste.. idem si je mets SELECT * ...)

Mouhiiin help me
A voir également:

11 réponses

mailliam Messages postés 261 Date d'inscription mardi 2 juillet 2002 Statut Membre Dernière intervention 10 mars 2014 3
19 févr. 2010 à 22:47
J'ai trouvé une astuce

Il y a surement un moyen mieux de faire que se reconnecter à la base de donnée je ne sait combien de fois dans une boucle, mais bon j'ai rien trouvé d'autre..
J'ai utilisé bêtement LIMIT 1 dans la boucle while:

mysql_query("SELECT date FROM matable WHERE forum='$forum' AND sujet='$sujet' ORDER BY date DESC LIMIT 1");
comme ca il me l'affiche qu'une fois..

Bref je sais pas si je suis clair, mais bon ca marche donc j'suis content..
Si qqun a le même problème qu'il me le dise et je m'expliquerai mieux

merci quand même pour votre aide!!
A++ et bonne prog :)
3
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
8 févr. 2010 à 00:20
Salut,

T'as regardé du côté de GROUP BY ?

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
8 févr. 2010 à 09:13
Je suis bête ou j'ai pas compris ce que tu cherchais ?
Tu peux nous donner un exemple de la donnée d'entrée et du résultat voulu ?
S.
0
mailliam Messages postés 261 Date d'inscription mardi 2 juillet 2002 Statut Membre Dernière intervention 10 mars 2014 3
8 févr. 2010 à 22:45
Coucou, merci d'avoir répondu :)
et fait je simplifais un peu avec mon histoire de mail, mais c'est pareil..

et fait j'ai un problème avec mon forum:
j'ai une table (ici matable) qui contient le nom de l'auteur, le forum, le titre du sujet, le message et la date.

J'aimerai classer la liste des sujets par la date du + récent message.
et évidement que le sujet n'apparaisse qu'une seule fois..

j'arrive pas à classer par date mes sujets, ni à afficher la date du message le + récent

Voici mon code: (pour afficher la liste des sujet du $forum="mécanique")

$reponse = mysql_query("SELECT DISTINCT sujet FROM matable WHERE forum='$forum' ORDER BY date DESC");

// Puis on fait une boucle pour afficher tous les résultats :
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<?php echo $donnees['sujet']; ?>

Le dernier message date du <?php echo $donnees['date']; ?>
<?
}
// Fin de la boucle

-Donc pourquoi il ne se classe pas par date?
-et comment je peux aller chercher la date? car si je fais SELECT * ca marche pas..

mais raconté comme ça, je ne sais pas si c'est bcp + clair
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
8 févr. 2010 à 22:52
Salut,

date est un mot réservé à MySQL qu'il n'est pas possible d'utiliser pour un nom de table sans l'échapper préalablement.
Il faut faire ORDER BY `date` DESC
Les guillemets ` sont importants, ce n'est pas ' ni "

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
0
mailliam Messages postés 261 Date d'inscription mardi 2 juillet 2002 Statut Membre Dernière intervention 10 mars 2014 3
9 févr. 2010 à 21:28
Salut mon tas d'neige d'hiver

J'ai fait $reponse = mysql_query("SELECT DISTINCT sujet FROM matable WHERE forum='$forum' ORDER BY `date` DESC");

et ca me classe tjs rien par date
de + comment je peux après afficher le contenu du champs date?

Merci de ta précieuse aide
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
9 févr. 2010 à 22:39
T'as essayé en appelant le champ date autrement ? Parce que si ça se trouve, il veut même pas en le protégeant avec des guillemets...

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
0
mailliam Messages postés 261 Date d'inscription mardi 2 juillet 2002 Statut Membre Dernière intervention 10 mars 2014 3
12 févr. 2010 à 17:56
nan ca marche tjs pas.. mais limite le problème de date c'est pas grave..

Comment je peux faire pour voir le contenu des autres champs?

C'est possible avec DISTINCT? Ou comment faire autrement?
0
Gr3g69 Messages postés 27 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 13 février 2010
13 févr. 2010 à 11:46
Hello,

Je ne pense pas que celà soit possible avec DISTINCT.
Mais là, j'vois pas comment faire pour afficher ce que tu veux.

J'y réfléchi ...

As-tu regardé sur les sources d'un petit forum (genre fluxBB par exemple) pour voir comment ils affichent leurs données pour générer ce genre de page ?
0
mailliam Messages postés 261 Date d'inscription mardi 2 juillet 2002 Statut Membre Dernière intervention 10 mars 2014 3
18 févr. 2010 à 19:52
Tcho!
C'était une bonne idée le p'tit forum fluxBB mais je trouve pour comment ils font..

Je vais chercher encore, ca m'énerve car ca me semble tout simple mais rien ne marche

J'te dis si je trouve qque chose..
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
20 févr. 2010 à 06:37
C'est bien si tu as trouvé 'une' solution, l'essentiel est que ça puisse te faire avancer.
Par contre la connexion/déconnexion n'est pas la bonne solution techniquement, je te confirme.. LOL !!
Malgré mes efforts je ne suis pas arrivé à comprendre ton besoin, pourtant j'avais essayé.
S.
0
Rejoignez-nous