Как это превратить в один запрос?

Конечно, вам будет полезно узнать о возможностях объединения нескольких запросов в один в MySQL с помощью операторов JOIN, UNION и подзапросов.

Оператор JOIN позволяет объединить две или более таблицы в один результат. Существуют различные типы JOIN, включая INNER JOIN, LEFT JOIN, RIGHT JOIN и FULL JOIN. Каждый тип JOIN имеет свои особенности и определяет, какие записи из таблицы "слева" и "справа" будут включены в результат.

Например, предположим, у нас есть две таблицы "users" и "orders". Таблица "users" содержит информацию о пользователях, а таблица "orders" содержит информацию о заказах, которые были сделаны пользователями.

Для того чтобы объединить эти две таблицы и получить информацию о пользователях и их заказах в одном запросе, можно использовать оператор INNER JOIN:

SELECT users.name, orders.order_number, orders.order_date
FROM users
INNER JOIN orders ON users.id = orders.user_id;

В этом запросе мы выбираем имя пользователя из таблицы "users" и номер заказа с датой заказа из таблицы "orders". Оператор ON указывает условие сопоставления, в данном случае мы сравниваем значения id в таблице "users" и user_id в таблице "orders". Результатом будет таблица, содержащая только те строки, для которых есть совпадение между пользователями и их заказами.

Другим способом объединения результатов нескольких запросов является использование оператора UNION. UNION объединяет результаты двух или более запросов в один набор данных, при этом удаляются дубликаты.

SELECT name, age FROM table1
UNION
SELECT name, age FROM table2;

Этот запрос объединяет результаты двух запросов, один из которых выбирает столбцы "name" и "age" из таблицы "table1", а другой - из таблицы "table2". Результатом будет набор данных, содержащий уникальные записи из обоих таблиц.

Также можно использовать подзапросы для объединения результатов нескольких запросов в один. Подзапросы выполняются внутри основного запроса и позволяют использовать результаты одного запроса в другом.

SELECT name, age FROM users WHERE country_id IN (SELECT id FROM countries WHERE name = 'USA');

В этом запросе мы выбираем имя и возраст пользователей, которые находятся в странах с именем 'USA'. Внутри подзапроса мы выбираем id страны 'USA' из таблицы "countries", а затем используем этот результат в основном запросе для фильтрации пользователей.

Таким образом, с использованием операторов JOIN, UNION и подзапросов можно объединить результаты нескольких запросов в один запрос в MySQL. Каждый из этих методов имеет свои особенности и применение, и выбор зависит от конкретной задачи и требований.