Я не очень хорошо понимаю MySQL, вот структуры таблиц, которые я использую.
пользователей
id | first_name | last_name | имя пользователя | пароль
категории
id | user_id | имя | Описание
ссылка
id | user_id | category_id | имя | URL | описание | date_added | hit_counter
Я пытаюсь вернуть набор результатов следующим образом, чтобы предоставить информацию о категории для пользователя, которая включает в себя количество ссылок в нем.
id | user_id | имя | описание | link_count
В настоящий момент у меня есть этот запрос, но он возвращает строки только для категорий, имеющих ссылки. Он должен возвращать строки для категорий, у которых нет ссылок (пустые категории).
SELECT категории. *, COUNT (links.id) FROM категории LEFT JOIN ссылки ON categories.id = links.category_id;
Как сделать этот запрос? Спасибо.
мы не можем выбрать таблицу dot "star" с агрегатом.
что вы хотите сделать, это что-то вроде (псевдокод):
select
categories.field1,
categories.field2,
{etc.}
count(links.id)
from categories
left join links
on categories.id = links.category_id
group by
categories.field1,
categories.field2,
{etc.}
iow: вам не хватает группы по блоку кода, чтобы получить нужный агрегат в наборе результатов запроса.
Чтобы отменить alien052002 ответ, чтобы соответствовать вашему конкретному вопросу, необходимо следующее (непроверенное):
select c.id,
c.user_id,
c.name,
c.description,
count(l.link_count)
from categories c
left join links l on l.category_id = c.id
group by c.id, c.user_id, c.name, c.description
попробуйте это
SELECT categories.*, COUNT(links.id) FROM categories LEFT JOIN links ON categories.id=links.category_id group by categories.id;