mysql DISTINCT
40 messages
• Page 1 sur 3 • 1, 2, 3
Consultez la formation au REFERENCEMENT naturel Google de WebRankInfo / Ranking Metrics
- jeroen
- WRInaute passionné

- Messages: 2455
- Inscription: 30 Aoû 2002
mysql DISTINCT
Salut,
J'ai un problème de requête mysql.
Sur mon site -www j'ai une table "sorties" (id, id_topo, date, com)
Je voudrais selectionner les dix sorties les plus récentes (champ date) et ayant un champ id_topo distinct.
Vous savez comment faire ???
Merci
J'ai un problème de requête mysql.
Sur mon site -www j'ai une table "sorties" (id, id_topo, date, com)
Je voudrais selectionner les dix sorties les plus récentes (champ date) et ayant un champ id_topo distinct.
Vous savez comment faire ???
Merci
-

Blini - WRInaute impliqué

- Messages: 506
- Inscription: 29 Nov 2004
Si tu es sous mysql en version < 4, tu ne peux pas faire de sous-requetes.
Alors il faut probablement (pas sûr), commencer par une requete du type:
Puis la parser et requêter pour chaque ligne obtenue un truc dans le genre:
Mais il y a peut-être mieux... Et surtout, ça ne marche que si il y a un seul enregistement pour un id_topo et date donnés...
Alors il faut probablement (pas sûr), commencer par une requete du type:
- Code: Tout sélectionner
select id_topo, max(date) as mdate from sorties group by id_topo order by mdate desc limit 10;
Puis la parser et requêter pour chaque ligne obtenue un truc dans le genre:
- Code: Tout sélectionner
select * from sorties where id_topo = (idtoporecup) and date = (daterecup);
Mais il y a peut-être mieux... Et surtout, ça ne marche que si il y a un seul enregistement pour un id_topo et date donnés...
- jeroen
- WRInaute passionné

- Messages: 2455
- Inscription: 30 Aoû 2002
e-kiwi a écrit:et "select distinct id_topo,id,date,comm order by date desc limit 0,10" tout simplement marche pas ?
Je crois que le distinct ne s'applique pas à un champ unique mais à toute la ligne, donc ça ne marche pas (il peut y voir 2 lignes distinctes avec le même id_topo).
id est unique (autoincrément)
id_topo n'est pas unique et fait référence au champ id (unique : autoincrément) de la table topos
Vous avez des idées ?
je suis [presque] sûr que l'on peut faire ça en 1 requête.....
-

e-kiwi - Modérateur

- Messages: 15541
- Inscription: 23 Déc 2003
>> il peut y voir 2 lignes distinctes avec le même id_topo
plus haut ->
>> ayant un champ id_topo distinct.
tu veux des id_topo distinct ou bien ?
c est pas clair. colle la structure de ta pages et qques enregistrements en exemple si tu veux qu'on t aide. faire du SQL sans connaitre la table cé pas simple
plus haut ->
>> ayant un champ id_topo distinct.
tu veux des id_topo distinct ou bien ?
c est pas clair. colle la structure de ta pages et qques enregistrements en exemple si tu veux qu'on t aide. faire du SQL sans connaitre la table cé pas simple
-

Blini - WRInaute impliqué

- Messages: 506
- Inscription: 29 Nov 2004
jeroen a écrit:(...)je suis [presque] sûr que l'on peut faire ça en 1 requête.....
Ah ben des idées, j'en ai plein
Par exemple, ça, ça marche très bien:
- Code: Tout sélectionner
select tb1.*
from
sorties as tb1,
(select id_topo, max(date) as mdate from sorties group by id_topo order by mdate desc limit 10) as tb2
where tb1.id_topo = tb2.id_topo
and tb1.date = tb2.mdate
Mais il faut un mysql v4.0 !!
- jeroen
- WRInaute passionné

- Messages: 2455
- Inscription: 30 Aoû 2002
e-kiwi a écrit:>> il peut y voir 2 lignes distinctes avec le même id_topo
c'est ce que me fournirait sa solution, et c'est ca que je ne veux pas (je veux un id_topo distinct)
@ Yan Bilik
Y'a plus simple, en déclarant 2 fois la table et en faisant une jointure par exemple ??
y'a quoi comme version de mysql sur ovh 300GP ??
-

Blini - WRInaute impliqué

- Messages: 506
- Inscription: 29 Nov 2004
jeroen a écrit:Y'a plus simple, en déclarant 2 fois la table et en faisant une jointure par exemple ??
y'a quoi comme version de mysql sur ovh 300GP ??
Si c'est comme le 60gp (et ça doit être le cas), c'est du mysql v3. Donc pas de sous-requêtes.
Concernant la jointure, c'est évidemment de ce côté qu'il faut regarder, mais là, comme ça, je ne sait pas trop comment faire.
Peux-tu déjà confirmer qu'avec un id_topo et une date donnés, on n'obtient qu'un seul enregistrement ?
-

Blini - WRInaute impliqué

- Messages: 506
- Inscription: 29 Nov 2004
The Jedi a écrit:Et pourquoi pas un GROUP BY id_topo, c'est plus rapide et moins lourd.
A mon avis, c'est parce qu'un simple group by id_topo (avec un max(date) comme je lui suggérais plus haut) ne lui retourneras pas les ID.
Enfin, à lui de dire...
40 messages
• Page 1 sur 3 • 1, 2, 3
Formation recommandée sur ce thème :
Formation REFERENCEMENT naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- MySql selection sans doublon (select distinct)
- Problème select distinct
- [résolu] jointure et 'distinct'
- Probleme de SELECT DISTINCT
- captcha sur 2 domaines distinct
- Multiples DISTINCT dans une requête..possible ?
- DISTINCT ne marche plus, tout d'un coup
- Problème avec clause DISTINCT dans requête SQL
- [SQL] Select, Distinct, Max, Group by et autres fariboles
- Gestion des langues et des sessions en PHP / MySQL - 02-05-2004
- Passage à l'heure d'été/hiver sur un forum phpBB - 31-10-2010
- Script de mise en cache des pages (PHP MySQL) - 09-08-2010
- GoogleStats : analyse temps réel des visites de Google sur votre site - 02-10-2002
- Sortie officielle de GoogleStats v2.0 ! - 23-02-2003
- AdSense Tracking : statistiques détaillées sur les clics AdSense - 29-02-2004
- Le WRInaute du moment - 24-10-2006
- Les différents systèmes de mise en cache des données - 16-08-2010
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

