К записям из одной таблицы выбрать количество соответствующих записей из двух других таблиц - 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

Объяснение кода листинга программы

В данном коде:

  1. Выполняется запрос SELECT к базе данных.
  2. В результате выбираются следующие поля: id, email, name пользователя, а также два подсчета: zakazy и favs.
  3. Для выполнения операции подсчета используются функции COUNT и DISTINCT.
  4. Используется оператор LEFT OUTER JOIN для объединения таблиц users, orders и favorites по соответствующим полям. 5.GROUP BY применяется к полю id пользователя.
  5. Результаты сортируются по убыванию id пользователя с помощью оператора ORDER BY. Таким образом, данный запрос выбирает информацию о пользователях из таблицы users, а также подсчитывает количество заказов и предпочтений для каждого пользователя, которые были сделаны другими пользователями.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы