У меня есть 3 стола. Мне нужно выводить результаты из всех трех, но группировать их по дате и показывать количество записей в день.Одиночные или несколько запросов
Таблицы:
business_actions
----------------
id
article_id
business_id
action
articles
----------------
id
user_id
item
date
time
users
------------------
id
name
role
Я не уверен, если я должен попытаться получить все это в одном запросе выполнить запрос, где я буду получать различные даты и общее число записей, а затем запустить дополнительные запросы для получения дополнительной информации? ..
Я начал с этого, но не зашел слишком далеко.
SELECT
COUNT(business_actions.id) AS cnt,
business_actions.action,
articles.user_id,
articles.item,
articles.date,
articles.time,
users.*
FROM business_actions
LEFT JOIN articles ON (business_actions.article_id = articles.id)
LEFT JOIN users ON (articles.user_id = users.id)
WHERE business_actions.business_id = ".$busID."
ORDER BY articles.time DESC
GROUP BY articles.date
LIMIT 20
Предел фактически должно быть число дней, а не записи ...
Конечный результат должен выглядеть примерно так:
July 20, 2015 (2)
Some item -- 10:00 am
Name: John M
Role: Admin
Action: login
Another Item -- 10:30 am
Name: Jeff M
Role: User
Action: publish
July 18, 2015 (3)
Some item -- 2:00 am
Name: Bill M
Role: User
Action: print
Another Item -- 10:30 am
Name: Bob W
Role: Manager
Action: exit
One more item -- 2:00 pm
Name: William N
Role: User
Action: logout
UPDATE: Вот Fiddle на основе Ответ Бармара ниже.
Ничего себе, это очень здорово, но я получаю ограниченные результаты возвращаются. Я попробовал это на скрипке здесь: http://sqlfiddle.com/#!9/4817d/1 Я также исправил свою опечатку: articles.res_id должен быть articles.id – santa
Нужно делать подсчет в подзапросе тоже , И в скрипке у вас есть время в столбце 'date', поэтому я должен использовать' DATE (date) ', чтобы объединить их по дате. – Barmar