Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1496 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Problème avec une petite requête et un DISTINCT.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL] Problème avec une petite requête et un DISTINCT.

n°1592356
stannie
Posté le 27-07-2007 à 13:10:19  profilanswer
 

Hello tout le monde. Donc j'ai les deux tables suivantes :
 
R1  
----------
id  |  time
----------
1   |  5
2   |  6
2   |  7
3   |  8

 
 
R2
-----------
id  |  titre
-----------
1  |  Salut
2  |  Bonjour
3  |  Hello

 
 
 
Sujet : On veut récupérer le titre le plus récent, plus un titre est récent plus 'time' augmente. Par exemple "Hello" est plus vieux que "Salut"
On aurait donc le résultat suivant :
-------------
time  |  titre
-------------
5      |  Hello  
7      |  Bonjour
8      |  Salut

 
 /!\ On veut éliminer les redondances de titre !
Donc la solution suivante n'est en aucun cas envisageable :
-------------
time  |  titre
-------------
5      |  Hello  
6      |  Bonjour
7      |  Bonjour
8      |  Salut

 
MA REQUETE :
 
SELECT DISTINCT R2.titre, R1.time
FROM from R1, R2
WHERE R1.id=R2.id
GROUP BY R2.titre, R1.time
ORDER BY R1.time DESC
LIMIT 5
 
Donc avec cette méthode on trouve la solution que je ne veux pas trouver :
-------------
time  |  titre
-------------
5      |  Hello  
6      |  Bonjour
7      |  Bonjour
8      |  Salut

/!\ On voit bien que le DISTINCT n'a pas 'agit'
 
Sinon j'ai trouvé la requete SQL qui permet d'enlever ces redondances, cependant pour se faire je ne récupère pas le temps...
 
SELECT DISTINCT R2.titre
FROM R1, R2
WHERE R1.id=R2.id
GROUP BY R1.time
ORDER BY R1.time DESC
LIMIT 5  
 
et on trouve donc le résultat suivant
-------------
titre
-------------
Hello  
Bonjour
Salut

 
 
 
PS :  
En fait c'est la bdd de phpBB, et je cherche à récupérer les 5 derniers topics où les personnes ont posté pour la dernière fois, ainsi que la date à laquelle ils ont posté.
Si vous préférez voici les deux requetes avec les champs / tables de phpBB :
SELECT DISTINCT (FT.topic_title), FP.post_time
FROM forum_topics FT, forum_posts FP
WHERE FT.topic_id = FP.topic_id
GROUP BY FT.topic_title, FP.post_time
ORDER BY FP.post_time DESC
LIMIT 5  
 
SELECT DISTINCT FT.topic_title
FROM forum_topics FT, forum_posts FP
WHERE FT.topic_id = FP.topic_id
GROUP BY FP.post_time
ORDER BY FP.post_time DESC
LIMIT 5  
 
Les résultats en image :
http://st4n.041.free.fr/exemple_sql.jpg
 
 
 
Merci d'avance pour l'aide.


Message édité par stannie le 27-07-2007 à 13:23:32
mood
Publicité
Posté le 27-07-2007 à 13:10:19  profilanswer
 

n°1592373
stannie
Posté le 27-07-2007 à 13:50:14  profilanswer
 

j'ai trouvé une autre méthode en cherchant sur des forums :
 
SELECT t.topic_title, p.post_time
FROM forum_topics AS t, forum_forums AS f, forum_posts AS p, forum_users AS u
WHERE t.forum_id = f.forum_id
AND t.topic_moved_id =0
AND p.post_id = t.topic_last_post_id
AND u.user_id = p.poster_id
ORDER BY t.topic_last_post_id DESC
LIMIT 5
 
Cette technique marche parfaitement pour ce que je veux faire, mais par intérêt pour le SQL j'aimerais savoir si ce que je voulais faire plus haut est possible.


Message édité par stannie le 27-07-2007 à 13:51:01
n°1592379
djobidjoba
Posté le 27-07-2007 à 13:55:45  profilanswer
 

au piff, une requete imbriquée :/
 
select titre,id
from R2
where id IN (select distinct id from R1 order by time desc LIMIT 5)

n°1592385
anapajari
s/travail/glanding on hfr/gs;
Posté le 27-07-2007 à 14:03:56  profilanswer
 

euh non :o
max est une fonction d'aggregation bien pratique pour trouver le ... suspense ... max d'un ensemble de records.

Code :
  1. SELECT R2.titre, max(R1.time)
  2. FROM from R1 inner join  R2 on R1.id=R2.id
  3. GROUP BY R2.titre
  4. ORDER BY max(R1.time) DESC
  5. LIMIT 5
 

note:
- distinct et group by ensemble ça sert à rien
- group by n'est utile qu'en présence de fonction d'aggregation dans ton select.


Message édité par anapajari le 27-07-2007 à 14:04:21
n°1614499
dulaque
-
Posté le 24-09-2007 à 14:08:46  profilanswer
 

Bonjour, as tu trouvé une réponse s'il te plait, car je rencontre le meme probleme dans la gestion d'un site de l'un de mes clients en PHPBB
 
www.forum-rachatdecredits.com/test.php
 
Merci milles fois

n°1614539
MagicBuzz
Posté le 24-09-2007 à 15:08:57  profilanswer
 

dulaque a écrit :

Bonjour, as tu trouvé une réponse s'il te plait, car je rencontre le meme probleme dans la gestion d'un site de l'un de mes clients en PHPBB
 
www.forum-rachatdecredits.com/test.php
 
Merci milles fois


bonjour, as-tu lu la réponse d'anajapari juste avant d'avoir uppé le topic ?
 
parcequ'il y a tout ce qu'il faut dedans : solution et explications.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Problème avec une petite requête et un DISTINCT.

 

Sujets relatifs
Probleme bibliotheque partagée sous FireFox[HTML] probleme avec l'ouverture d'un popup
Problème de MIME (probablement)Probleme de cookie
Encore un probleme de .htaccessProblème création de fichier
problème de Fatal error: Allowed memory size of 33554432 bytes exhaustproblème d'accès variable entre deux threads
[Résolu] [SQL] comment afficher un grand nombre ?[résolu] Exécuter une requête à partir d'un champ
Plus de sujets relatifs à : [SQL] Problème avec une petite requête et un DISTINCT.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR