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
, удовлетворяющих условию.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д