Как вывести количество объектов на одного user mysql?
в таблице objektos присваиваться к каждой записи user_id то есть кто добавил эту запись. мне нужно что бы возле каждого пользователя выводилось количество записей на user_id то есть сколько каждый добавил записей.
есть такой код, но она не работает, теряются все результаты с остальными значениями там где я вывожу
select u.* ,
(select count(*) from objektos o GROUP BY user_id) as entry_count
from users u
order by u.id desc
select u.* ,
ifnull(c.cnt, 0) as entry_count
from users u
left join (select count(*) as cnt, o.user_id from objektos o GROUP BY user_id) as c ON u.id = c.user_id
order by u.id desc
Спасибо вам большое, а не подскажете как вот для вот этого сделать такое же
select
o.*,
c.title_ru city_title_ru,
c.title_eng city_title_eng,
u.ugore
from objektos o
inner join cities c on c.id = o.city
inner join users u on u.id = o.user_id
select
o.*,
c.title_ru city_title_ru,
c.title_eng city_title_eng,
u.ugore,
ifnull(c.cnt, 0) as entry_count
from objektos o
inner join cities c on c.id = o.city
inner join users u on u.id = o.user_id
left join (select count(*) as cnt, o1.user_id from objektos o1 GROUP BY o1.user_id) as c ON o.user_id = c.user_id
Корректировочка, alias c уже был так что
select
o.*,
c.title_ru city_title_ru,
c.title_eng city_title_eng,
u.ugore,
ifnull(cnts.cnt, 0) as entry_count
from objektos o
inner join cities c on c.id = o.city
inner join users u on u.id = o.user_id
left join (select count(*) as cnt, o1.user_id from objektos o1 GROUP BY o1.user_id) as cnts ON o.user_id = cnts.user_id
RoverWhite:
скажи пожалуйста
я когда вставлю ".$gond_sql." после
from то не работает, ошибка
у меня для двух function один и тот же запрос только в первый нужно еще вставлять
".$gond_sql." для поиска, может что то добавить
o.*,
c.title_ru city_title_ru,
c.title_eng city_title_eng,
u.ugore,
ifnull(cnts.cnt, 0) as entry_count
from objektos o
inner join cities c on c.id = o.city
inner join users u on u.id = o.user_id
left join (select count(*) as cnt, o1.user_id from objektos o1 GROUP BY o1.user_id) as cnts ON o.user_id = cnts.user_id
".$gond_sql."
В данном случае недостаточно информации, Вам надо посмотреть что у Вас содержится в переменной $gond_sql и как выглядит итоговый SQL запрос. Тогда будет понятно где ошибка
Если Вы про запрос представленный ниже, то там не хватает WHERE
select
o.*,
c.title_ru city_title_ru,
c.title_ua city_title_ua,
c.citesss city_citesss,
c.citess_ru city_citess_ru,
c.citess_ua city_citess_ua,
c.alias city_alias,
u.email
from objects o
inner join cities c on c.id = o.city
inner join users u on u.id = o.user_id
".$append_sql."
".($sort? ' order by ' . $sort : '')."
limit ".$start.", ".$num."
Т.е. вот так можно это написать
select
o.*,
c.title_ru city_title_ru,
c.title_ua city_title_ua,
c.citesss city_citesss,
c.citess_ru city_citess_ru,
c.citess_ua city_citess_ua,
c.alias city_alias,
u.email
from objects o
inner join cities c on c.id = o.city
inner join users u on u.id = o.user_id
where 1=1
".$append_sql."
".($sort? ' order by ' . $sort : '')."
limit ".$start.", ".$num."
Вам надо посмотреть на то, какой запрос выполняется на SQL сервере, если проблема в запросе.
Если у нас речь идет об вот этом запросе
======================================
$r = $this->core->db->query("
select
o.*,
c.title_ru city_title_ru,
c.title_ua city_title_ua,
c.citesss city_citesss,
c.citess_ru city_citess_ru,
c.citess_ua city_citess_ua,
c.alias city_alias,
u.email
from objects o
inner join cities c on c.id = o.city
inner join users u on u.id = o.user_id
".$append_sql."
".($sort? ' order by ' . $sort : '')."
limit ".$start.", ".$num."
");
======================================
то мы вполне можем сохранить текст запроса в файлик, например вот так
======================================
$debug_sql = "
select
o.*,
c.title_ru city_title_ru,
c.title_ua city_title_ua,
c.citesss city_citesss,
c.citess_ru city_citess_ru,
c.citess_ua city_citess_ua,
c.alias city_alias,
u.email
from objects o
inner join cities c on c.id = o.city
inner join users u on u.id = o.user_id
".$append_sql."
".($sort? ' order by ' . $sort : '')."
limit ".$start.", ".$num."
";
file_put_contents($debug_sql,'debug_sql.txt')
$r = $this->core->db->query($debug_sql);
======================================
Т.е. мы из скрипта сохраним содержимое SQL запроса в файлик
debug_sql.txt
И открыв этот файлик можем увидеть реальный SQL код который у нас на сервере будет выполняться
и понять в чем ошибка.
Конечно имя файла debug_sql.txt надо снабдить путем куда он должен сохраниться.
Ну в таком случае очевидно что происходит фатальная ошибка на стороне сервера, и причину этой ошибки нужно смотреть в логе ошибок сервера. Вполне вероятно что код, который мы с Вами правим где-то содержит синтаксическую ошибку, которая скорее всего и приводит к ошибке 500 на сервере.