|
|
|
Посчитать количество пользователей, применив фильтрацию по нескольким таблицам (left join)
|
|||
|---|---|---|---|
|
#18+
Есть таблица user. Есть таблица site (user._id = site.userId) Есть таблица table1 (table1.siteId = site._id) Есть таблица table2 (table2.userId = user._id) Нужно посчитать количество пользователей по заданным фильтрам. Фильтры могут быть по разным таблицам. Например такие фильтры: site.removed = 0, site.status > -1, u.isAdmin = 0. Делаю такой запрос: SELECT COUNT(*) AS countReg FROM ( SELECT COUNT(u._id) FROM user `u` LEFT JOIN site `s` ON (u._id = s.userId) LEFT JOIN table1 `t1` ON (t1.siteId = s._id) LEFT JOIN table2 `t2` ON (t2.userId = u._id) WHERE (u.isAdmin = 0 AND s.removed = 0) GROUP BY u._id) AS dd Но, как я понимаю, в выборку не попадают пользователи, у которых нет вообще ни одного сайта, а их надо учитывать. Как правильно составить запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2015, 11:50 |
|
||
|
Посчитать количество пользователей, применив фильтрацию по нескольким таблицам (left join)
|
|||
|---|---|---|---|
|
#18+
moralezв выборку не попадают пользователи, у которых нет вообще ни одного сайта, а их надо учитывать. Как правильно составить запрос? Правильно связать таблицы. Для чего надо не запрос писАть, а карандашом на бумаге нарисовать таблицы и связи - и сразу станет видно, какие таблицы левее, а какие правее, и в каком порядке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2015, 12:36 |
|
||
|
Посчитать количество пользователей, применив фильтрацию по нескольким таблицам (left join)
|
|||
|---|---|---|---|
|
#18+
moralezв выборку не попадают пользователи, у которых нет вообще ни одного сайта Поскольку таблица user самая правая - из неё в выборку попадают все записи, и пофиг, чего там где нету. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2015, 12:37 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=115&tid=1832338]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
82ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 223ms |
| total: | 403ms |

| 0 / 0 |
