У меня есть таблица с записями с отметками времени DATETIME и поле ID. Я хочу сделать запрос MySQL (в моем PHP script), который выбирает из другой таблицы идентификатор соответствия. Я хочу сделать какое-то соединение, которое будет сортироваться по количеству записей в первой таблице с отметкой времени более чем за 24 часа. Итак, в основном, если в первой таблице есть 30 записей с меткой времени менее 24 часов с идентификатором "334", тогда я хочу выбрать строку из второй таблицы с идентификатором 334. И это должно быть до входа с идентификатором "234", который имеет только 20 записей за последние 24 часа.
Надеюсь, это понятно... Я очень зациклен на том, как это сделать, поэтому спасибо за любую помощь.: D
Использование:
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
Try:
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
Если вы также хотите видеть строки из TableB, которые не имеют временных меток за последние 24 часа, используйте внешнее соединение:
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
= a.id
в предложенииON
. Не так ли?