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
, которые соответствуют пользователю с идентификатором, равным идентификатору текущего пользователя.
- SELECT - тип запроса на выборку данных.
- u.name - название переменной, которая будет содержать имена пользователей.
- ( SELECT COUNT( p.user_id ) FROM phones p WHERE p.user_id = u.id ) - подзапрос, который будет считать количество записей в таблице
phones
, удовлетворяющих условию, что идентификатор пользователя равен идентификатору текущего пользователя. - AS COUNT - псевдоним для переменной, которая будет содержать результат подсчета.
- FROM users u - указывается, что данные будут выбираться из таблицы
users
. - Вывод: после выполнения запроса, в переменной
u.name
будет содержаться имя пользователя и в переменнойCOUNT
будет содержаться количество записей в таблицеphones
, удовлетворяющих условию.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д