Давайте представим, у меня есть следующая таблица users
:MySQL вложенной выбор: могу ли я использовать любые данные из внешнего выбора?
id name
1 John
2 Mike
3 Max
И стол posts
id author_id date title
1 1 2014-12-12 Post 2
2 1 2014-12-10 Post 1
3 2 2014-10-01 Lorem ipsum
...and so on
И я хотел бы иметь запрос, содержащий следующие данные:
пользователя наименование
количество сообщений пользователя в течение последней недели
количество сообщений пользователя в течение последнего месяца
Я могу сделать это только для каждого отдельного пользователя (с идентификатором 1 в следующем примере):
SELECT
`name`,
(SELECT COUNT(*) FROM `posts`
WHERE
`author` = 1 AND
UNIX_TIMESTAMP()-UNIX_TIMESTAMP(`date`) < 7*24*3600) AS `posts7`,
(SELECT COUNT(*) FROM `posts`
WHERE
`author` = 1 AND
UNIX_TIMESTAMP()-UNIX_TIMESTAMP(`date`) < 30*24*3600) AS `posts30`
FROM `users`
WHERE `id` = 1
Я подозреваю, что MySQL позволит сделать это для всех пользователей в рамках одного запроса, если бы я мог обмениваться данными между внутренним и внешним SELECT. Я, вероятно, использую неправильные слова, но я действительно надеюсь, что люди здесь поймут мои потребности, и я помогу.
Почему бы не использовать соединение между должностями и имени и два заявления случая, чтобы определить, если пост <7 дней или менее чем за 30 дней, то совокупный результат. .. – xQbert