Encore une histoire de doublons ! ... mais plus compliqué ... :(

Résolu
Usaginou Messages postés 10 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 25 juillet 2008 - 23 juil. 2008 à 17:20
Usaginou Messages postés 10 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 25 juillet 2008 - 25 juil. 2008 à 00:06
Me voila encore avec un histoire de doublons ^^

Grace a Yann_lo_san, j'ai fais la découverte de DISTINCT (quel bel outil :p) Depuis j'ai découvert GROUP BY au effet quasi similaire ^^

enfin voila .... je vous réprésente vite fait ma table :p

ID       titre                      clan       num_ep     date
1      Code Quantum       [CG]         1           1216575000   
2      Sliders                    [SF]          1           1216575001
3      Code Quantum       [CG]         2           1216575002
4      The Simpsons         [CG]         1           1216575003
5      Heroes                   [SF]          1           1216575004
...

Date sont des timestamp dans un champ BIGINT pour infos, la j'ai mis nimp c'est pour vous montrer
Sur mon site, les gens peuvent ajouter les épisodes si ils ont les infos nécessaire pour remplir la BDD (les autres champs que je n'ai pas marqué)
Sur la page index, je veux faire un cadre permettant d'afficher le dernier ajout de chaque Clan, j'ai donc tenté en vain différente requete... je vous en donne quelques unes que j'ai essayé :

> SELECT * FROM episodes GROUP BY team WHERE date='max(date)'
> SELECT DISTINCT (clan), titre, num_ep, mes_autres_champs FROM episodes ORDER BY date DESC
...
enfin voila j'ai tenté un peu tout ce que j'ai trouvé sur le net, et je découvre que la plupart des gens raconte n'importe quoi, comme la deuxième commande ou le distinct n'est sensé prendre en compte que le clan parce que il y a les parenthèse...
Donc si je n'avait que ces 5 résultats la dans ma table je veux voir apparaitre (bien présenté dans un tableau bien évidement) :
4      The Simpsons         [CG]         1           1216575003

5      Heroes                   [SF]          1           1216575004
Mais moi j'ai ca :
1      Code Quantum       [CG]         1           1216575000   

2      Sliders                    [SF]          1           1216575001
ou ca , ca dépend cde la forme de la machine XD :
2      Sliders                    [SF]          1           1216575001
1      Code Quantum       [CG]         1           1216575000   

En fait, comme je l'ai lu sur beaucoup d'autre forum, que ce soit avec DISTINCT ou GROUP BY, le ORDER BY est toujours pris apres. J'ai vu des trucs avec des AS qui me semblait correct mais le plus souvent il balance le code comme solution sans expliquer les effets, ce que je deteste -_-'

Peut-etre que ce n'set aps la solution je ne sai pas vraiment, certain petit malin dise que c'est pas possible... Pour moi tout est possible, si il le faut je fais ca en 25 requetes mais ca marchera ^^ C'est juste que si quelqu'un a la solution en une ou max deux requetes ca serait pas mal en m'expliquant un minimum ce que je ne connait aps encore :)

Merci d'avance a toute réponse ;)

Si il vous faut plus d'explications, je suis a vous toute la journéeet meme toute la nuit ^^ GEEK POWA XD

7 réponses

Usaginou Messages postés 10 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 25 juillet 2008
24 juil. 2008 à 01:46
oula y'a rien personne ? je demande un truc trop dur ?
Meme vous truc les plus pérave me suffiront, du moment que ca marche :)

Si je trouve cette nuit, je vous passerez la solution ^^
3
p3x Messages postés 214 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 9 janvier 2019
24 juil. 2008 à 10:03
c'est quoi le souci exactement je comprends pas ? qu'est ce que tu veux faire exactement ?

Parce que si tu veux trouver les doublons de ta table tu fais ca :
SELECT id FROM table GROUP BY id HAVING count(id) > 1;

p3x
3
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
24 juil. 2008 à 10:25
Hello ^^

Et avec une requete imbriquée de ce genre ? Tu fais une requete sur un résultat déjà ordonné :

SELECT DISTINCT
(clan), titre, num_ep, mes_autres_champs FROM (SELECT clan, titre, num_ep, mes_autres_champs FROM episodes ORDER BY DESC) alias_requete1 ORDER BY date
ASC )
<li>On prend tous les enregistrements de la table en appliquant un ORDER BY DESC</li><li>Puis, on fait une recherche, sur la précédente requete.</li>
<hr />Si ma reponse te convient, merci de l'accepter ! 
3
Usaginou Messages postés 10 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 25 juillet 2008
24 juil. 2008 à 19:09
Bon... J'ai testé ta solution Jojo, de différentes manières mais impossible de la faire marcher... Enla lisant j'ai compris qu'il fallait apparament faire une requete imbriquée. Ce que j'ai chercher sur le net et j'ai trouver réponse à ma solution je vous la met quand même, je suis sur que ca interessera un paquet de gens :
"SELECT e.* FROM episodes e INNER JOIN (SELECT max(date) date, clan FROM episodes GROUP BY clan ) le ON e.date le.date AND e.team le.clan"

Je ne peux qu'avouer que je ne comrpend pas vraiment tout, mais ca marche alors je vais me renseigner sur INNER JOIN le plus tot possible :p

Petit "bug" remarqué, si deux entrées on exactement le meme date, c'est à dire le même timestamp, alors il affichera tout les champs de ce timestamp, il faudrait ajouter que l'ID doit etre différent je supose ^^ mais moi ca ne me gêne pas donc :p
3

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

Posez votre question
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
24 juil. 2008 à 19:16
Lu,

Pour choisir un seul enregistrement par date ET par clan, ajoute ceci :

SELECT DISTINCT (CONCAT(e.clan, e.date)), e.* FROM episodes e INNER JOIN (SELECT max(date) date,
clan FROM episodes GROUP BY clan ) le ON e.date le.date AND e.team
le.clan

Normalement, ça doit marcher. En fait, là on fait une recherche en enlevant les doublons ou le clan et la date sont différents (on obtient un champ clan.date)
<hr />Si ma reponse te convient, merci de l'accepter ! 
3
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
24 juil. 2008 à 19:16
Lu,

Pour choisir un seul enregistrement par date ET par clan, ajoute ceci :

SELECT DISTINCT (CONCAT(e.clan, e.date)), e.* FROM episodes e INNER JOIN (SELECT max(date) date,
clan FROM episodes GROUP BY clan ) le ON e.date le.date AND e.team
le.clan

Normalement, ça doit marcher. En fait, là on fait une recherche en enlevant les doublons ou le clan et la date sont différents (on obtient un champ clan.date)
<hr />Si ma reponse te convient, merci de l'accepter ! 
3
Usaginou Messages postés 10 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 25 juillet 2008
25 juil. 2008 à 00:06
oh ! c'est gentil ca ^^ je prend :p voila je peut clore le topic ^^ J'espère que ca pourra servira  qq un d'autre ;)
3
Rejoignez-nous