1 сложный запрос или несколько простых? - MySQL

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

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

Есть 3 таблицы: users (id, type, online), colors(id,name), user_colors(user_id, color_id) Нужно получить выборку в которой будет список цветов для пользователей которые онлайн, и тип равен заданному. У меня алгоритм примерно такой получился.
$result = SELECT * id FROM users WHERE type = $type AND online = true;
$result = SELECT * color_id FROM user_colors WHERE id = $result //тут должен быть массив id который вернет первый запрос
$result = SELECT * name FROM colors WHERE id =  $result  //тут должен быть массив color_id который вернет второй запрос
Можно ли это все сделать одним запросом? Пример пожалуйста. Что будет лучше с точки зрения производительности, 3 таких запроса или 1 большой и страшный(если он возможен). Поправите ошибки в синтаксисе, мой вариант все равно не работает.

Решение задачи: «1 сложный запрос или несколько простых?»

textual
Листинг программы
SELECT * FROM users 
JOIN user_colors ON users.id = user_colors.id 
JOIN colors ON user_colors.id = colors.`name` 
WHERE `type` = $type AND online = TRUE

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

В представленном коде происходит выборка данных из двух связанных таблиц: users и user_colors, при этом в запросе используется оператор JOIN. После этого производится связывание таблицы user_colors с таблицей colors по полю id, которое соответствует значению поля name в таблице colors. В итоге получается выборка данных из таблицы users, которые связаны с таблицей user_colors, а та в свою очередь связана с таблицей colors. В части кода, которая находится после оператора FROM, указываются условия для выборки данных. В данном случае используется условие WHERE, которое отбирает только те строки, у которых значение поля type равно указанному значению переменной $type, а также значение поля online равно TRUE. В итоге получается выборка всех данных из таблицы users, которые соответствуют указанным условиям.

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


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

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

6   голосов , оценка 3.667 из 5