2010-10-18 3 views
0

J'ai une table pleine d'entrées avec des horodatages DATETIME, et un champ ID. Je veux faire une requête MySQL (dans mon script PHP) qui sélectionne une autre table avec l'ID correspondant. Je veux faire une sorte de jointure qui triera par le nombre d'entrées dans la première table avec un horodatage plus récent que 24 heures. Donc, fondamentalement, s'il y a 30 entrées dans la première table avec un horodatage de moins de 24 heures avec l'ID "334" alors je veux sélectionner la ligne de la deuxième table avec l'ID de 334. Et cela devrait venir avant une entrée avec l'ID "234" qui n'a que 20 entrées dans les dernières 24 heures. J'espère que c'est clair ... Je suis vraiment perplexe sur la façon de faire cela, alors merci pour toute aide. : DORDRE PAR la quantité d'enregistrements avec un horodatage de <24 heures (MySQL)

Répondre

0

Essayez:

Select b.ColA, b.ColB, b.ColC,-- etc. 
    Count(*) count 
From TableB b 
    Join TableA a 
    On a.Id = b.Id 
     And a.TimeStamp > getDate() - 1 
Group By b.ColA, b.ColB, b.ColC -- etc. 
Order By Count(*) Desc 

Si vous voulez aussi voir les lignes de TableB qui n'ont pas horodatages dans les dernières 24 heures puis utilisez une jointure externe:

Select b.ColA, b.ColB, b.ColC,-- etc. 
    Count(*) count 
From TableB b 
    Left Join TableA a 
    On a.Id = b.Id 
     And a.TimeStamp > getDate() - 1 
Group By b.ColA, b.ColB, b.ColC -- etc. 
Order By Count(*) Desc 
+0

Merci pour votre réponse! Ça va me prendre un peu de temps pour tout essayer et comprendre ce qu'il fait, mais je vous dirai si ça marche pour moi. Merci encore. – RobHardgood

2

Utilisation:

SELECT a.*, 
     x.num 
    FROM TABLE_A a 
    JOIN (SELECT t.id, 
       COUNT(*) AS num 
      FROM TABLE_B t 
      WHERE t.timestamp BETWEEN DATE_SUB(NOW, INTERVAL 1 DAY) 
           AND NOW() 
     GROUP BY t.id) x ON x.id = a.id 
ORDER BY x.num DESC 
+0

Merci pour votre réponse aussi! Je vais essayer celui-ci aussi et revenir à vous. – RobHardgood

+0

semble avoir perdu '= a.id' dans la clause' ON'. N'est-ce pas? – zerkms

+0

@zerkms: Corrigé, merci. –

Questions connexes