SQL Можно ли получить результат одним запросом, без subselect?

Да, в большинстве случаев можно получить результат без использования подзапросов (subselect) при работе с MySQL. MySQL предоставляет множество функций и возможностей, которые позволяют объединять данные из различных таблиц и проводить сложные операции непосредственно в запросе. Рассмотрим несколько примеров.

1. Использование JOIN:
JOIN позволяет объединять данные из двух или более таблиц по условию, указанному в предложении ON. Таким образом, вы можете получить данные из разных таблиц в одном запросе. Например, для получения списка пользователей и их заказов вы можете написать следующий запрос:

   SELECT users.username, orders.order_id
   FROM users
   JOIN orders ON users.user_id = orders.user_id;

Этот запрос соединяет таблицы "users" и "orders" по полю "user_id" и возвращает имена пользователей и их заказы.

2. Использование подзапросов с операторами EXISTS или IN:
Вместо использования подзапросов, можно использовать оператор EXISTS или IN в предложении WHERE. Это позволяет проверить существование значений в другой таблице в рамках одного запроса. Например, для получения списка пользователей, которые сделали заказы, вы можете написать следующий запрос:

   SELECT username
   FROM users
   WHERE EXISTS (SELECT 1 FROM orders WHERE users.user_id = orders.user_id);

В этом запросе оператор EXISTS осуществляет проверку существования данных в таблице "orders" для каждого пользователя в таблице "users".

3. Использование оператора UNION:
Оператор UNION позволяет объединить результаты двух или более запросов в один список строк. Например, если у вас есть две таблицы "customers" и "suppliers", и вы хотите получить полный список всех клиентов и поставщиков, вы можете написать запрос следующим образом:

   SELECT name FROM customers
   UNION
   SELECT name FROM suppliers;

Этот запрос объединяет результаты двух SELECT-запросов и возвращает полный список имен клиентов и поставщиков.

Важно отметить, что в некоторых случаях использование подзапросов может быть более эффективным с точки зрения производительности. Однако, в большинстве простых сценариев, с использованием подходящих функций MySQL, можно избежать использования подзапросов и получить желаемый результат в рамках одного запроса.