SQL. Вывод значений из таблицы и подсчет количества этих значений в другой таблице - MySQL

Узнай цену своей работы

Формулировка задачи:

Задание звучит так: Для таблиц user и phones, где соответствие записей определяется равенством user.id = phones.user_id привести 2 разных SQL запроса с помощью которых можно вывести имя пользователя (name) из таблицы users и количество записей из таблицы phones для этого пользователя, объяснить какой запрос более оптимальный и почему. Решил одним запросом:
SELECT name, COUNT('user_id') AS COUNT 
FROM users, phones 
WHERE users.id = phones.user_id 
GROUP BY 'id'
Какой может быть второй и какой оптимальнее?

Решение задачи: «SQL. Вывод значений из таблицы и подсчет количества этих значений в другой таблице»

textual
Листинг программы
SELECT 
    u.name, 
    ( SELECT COUNT( p.user_id ) FROM phones p WHERE p.user_id  = u.id ) AS COUNT
FROM users u

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

В представленном коде выполняется запрос на выборку данных из таблицы users и подсчет количества записей в таблице phones, которые соответствуют пользователю с идентификатором, равным идентификатору текущего пользователя.

  1. SELECT - тип запроса на выборку данных.
  2. u.name - название переменной, которая будет содержать имена пользователей.
  3. ( SELECT COUNT( p.user_id ) FROM phones p WHERE p.user_id = u.id ) - подзапрос, который будет считать количество записей в таблице phones, удовлетворяющих условию, что идентификатор пользователя равен идентификатору текущего пользователя.
  4. AS COUNT - псевдоним для переменной, которая будет содержать результат подсчета.
  5. FROM users u - указывается, что данные будут выбираться из таблицы users.
  6. Вывод: после выполнения запроса, в переменной u.name будет содержаться имя пользователя и в переменной COUNT будет содержаться количество записей в таблице phones, удовлетворяющих условию.

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


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

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

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