Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
SELECT DATE(fp.created) AS dt, COUNT(1) AS qnt
FROM forum_posts AS fp
WHERE fp.created >= '2013-01-01'
AND fp.createde < '2013-02-01'
GROUP BY DATE(fp.created)
...
SELECT fp2.id
FROM forum_posts fp2
WHERE fp2.created >= '2013-01-01'
AND fp2.created < '2013-02-01'
GROUP BY DATE(fp2.created), fp2.user_id
...
MIN(fp2.id)
. Суть же просто в фильтрации таблицы, чтобы дата и пользователь были уникальными.SELECT COUNT(DISTINCT fp2.user_id)
FROM forum_posts fp2
WHERE fp2.created >= '2013-01-01'
AND fp2.created < '2013-02-01'
GROUP BY DATE(fp2.created)
SELECT DATE( fp.created ) AS dt, COUNT( DISTINCT fp.user_id ) AS qnt
FROM forum_posts AS fp
WHERE fp.created >= '2013-01-01'
AND fp.created < '2013-02-01'
GROUP BY DATE( fp.created )
LIMIT 0 , 30
JOIN
всем хорош. Но не любой JOIN
легко сделать, когда ты используешь ORM.>> I know that while grouping MySQL uses first met value for those columns that are not grouped.
No, it doesn't. Again, you rely on pure luck; and now, *this* is explicitly documented in MySQL manual:
MySQL extends the use of GROUP BY so that the select list can refer to nonaggregated columns not named in the GROUP BY clause. <..> You can use this feature to get better performance by avoiding unnecessary column sorting and grouping. However, this is useful primarily when all values in each nonaggregated column not named in the GROUP BY are the same for each group. The server is free to choose any value from each group, so unless they are the same, the values chosen are indeterminate.
для того чтобы сделать джойн, необходимо сначала описать связь.
Неожиданные результаты простого MySQL-запроса