Usaginou
Messages postés10Date d'inscriptionsamedi 12 juillet 2008StatutMembreDernière intervention25 juillet 2008
-
23 juil. 2008 à 17:20
Usaginou
Messages postés10Date d'inscriptionsamedi 12 juillet 2008StatutMembreDernière intervention25 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
A voir également:
Encore une histoire de doublons ! ... mais plus compliqué ... :(
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20102 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 !
Usaginou
Messages postés10Date d'inscriptionsamedi 12 juillet 2008StatutMembreDernière intervention25 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20102 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 !
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20102 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 !