Всем привет.
Необходимо было выбрать кол-во объектов по каждому юзеру, такой запрос смог сформулировать:
$statement = $connection->prepare("SELECT DISTINCT(usr.name), usr.id, c.cnt, d.excnt FROM users usr
LEFT JOIN (SELECT COUNT(*) as cnt, obj.realtor_id FROM objects obj GROUP BY realtor_id) as c ON usr.id=c.realtor_id
LEFT JOIN (SELECT COUNT(*) as excnt, obj.realtor_id FROM objects obj WHERE obj.exclusive=1 GROUP BY realtor_id) as d ON usr.id=d.realtor_id");
Теперь задача усложнилась тем, что у каждого может быть менеджер, который находится в той же таблице (users). Для этого завели переменную managerId.
Теперь нужно вывести те же кол-во объектов, но по каждому менеджеру, а не по юзеру, пробую так:
$statement = $connection->prepare("SELECT DISTINCT(usr1.name), usr1.id, c.cnt, d.excnt FROM users usr1
LEFT JOIN (SELECT usr.id, usr.manager_id FROM users usr) as b ON usr1.id=b.manager_id
INNER JOIN (SELECT COUNT(*) as cnt, obj.realtor_id FROM objects obj GROUP BY realtor_id) as c ON b.id=c.realtor_id
INNER JOIN (SELECT COUNT(*) as excnt, obj.realtor_id FROM objects obj WHERE obj.exclusive=1 GROUP BY realtor_id) as d ON b.id=d.realtor_id");
но на каждого менеджера приходит несколько записей (т.е. дубли), хотя стоит DISTINCT.
Думаю, что проблема легко исправима, но не могу понять каким образом