К записям из одной таблицы выбрать количество соответствующих записей из двух других таблиц - MySQL
Формулировка задачи:
Вот сюда выложил кусок базы и свой запрос: http://sqlfiddle.com/#!9/939175/2
У пользователя с id=3 хочу чтобы показывалось zakazy=3, favs=2, а показывается 6 (их произведение).
Выборки из 2 таблиц работают: пользователи + заказы -> http://sqlfiddle.com/#!9/939175/4 или пользователи + избранное -> http://sqlfiddle.com/#!9/939175/5
А можно ли сделать одним запросом выборку из 3 таблиц?
PS:
поисковики, мануалы и форумы читаю уже часа 3, пробовал разные варианты, в т.ч. UNION, ничего не получается
Решение задачи: «К записям из одной таблицы выбрать количество соответствующих записей из двух других таблиц»
textual
Листинг программы
SELECT u.id, u.email, u.name, COUNT(DISTINCT o.id) as zakazy, COUNT(DISTINCT f.id) as favs FROM users as u LEFT OUTER JOIN orders as o on o.email=u.email LEFT OUTER JOIN favorites as f on u.id=f.user_id GROUP BY u.id ORDER BY u.id Desc
Объяснение кода листинга программы
В данном коде:
- Выполняется запрос SELECT к базе данных.
- В результате выбираются следующие поля: id, email, name пользователя, а также два подсчета: zakazy и favs.
- Для выполнения операции подсчета используются функции COUNT и DISTINCT.
- Используется оператор LEFT OUTER JOIN для объединения таблиц users, orders и favorites по соответствующим полям. 5.GROUP BY применяется к полю id пользователя.
- Результаты сортируются по убыванию id пользователя с помощью оператора ORDER BY. Таким образом, данный запрос выбирает информацию о пользователях из таблицы users, а также подсчитывает количество заказов и предпочтений для каждого пользователя, которые были сделаны другими пользователями.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д