SQL как сделать выборку по двум таблицам одним запросом?

Для того чтобы сделать выборку данных из двух таблиц одним запросом в SQL, вы можете использовать оператор JOIN, который позволяет объединять строки из одной таблицы со строками в другой таблице на основе заданного условия.

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

1. INNER JOIN: Возвращает только те строки, которые имеют совпадения в обеих таблицах на основе указанного условия. Например:

SELECT *
FROM таблица1
INNER JOIN таблица2
ON таблица1.столбец = таблица2.столбец;

2. LEFT JOIN: Возвращает все строки из левой таблицы и только совпадающие строки из правой таблицы. Если нет совпадений, то для правой таблицы возвращается NULL. Например:

SELECT *
FROM таблица1
LEFT JOIN таблица2
ON таблица1.столбец = таблица2.столбец;

3. RIGHT JOIN: Возвращает все строки из правой таблицы и только совпадающие строки из левой таблицы. Если нет совпадений, то для левой таблицы возвращается NULL. Например:

SELECT *
FROM таблица1
RIGHT JOIN таблица2
ON таблица1.столбец = таблица2.столбец;

4. FULL JOIN: Возвращает все строки из обеих таблиц, независимо от наличия совпадений. Если нет совпадений, то для недостающих значений возвращается NULL. Например:

SELECT *
FROM таблица1
FULL JOIN таблица2
ON таблица1.столбец = таблица2.столбец;

Кроме оператора JOIN, можно также использовать подзапросы (subquery) для получения данных из двух таблиц одним запросом. Подзапрос вполне может быть частью основного запроса и может использоваться для фильтрации, сортировки или агрегации данных.

Вот примеры использования подзапроса:

SELECT *
FROM таблица1
WHERE столбец IN (SELECT столбец FROM таблица2);

SELECT *
FROM таблица1
WHERE столбец = (SELECT столбец FROM таблица2 WHERE условие);

В обоих примерах подзапрос возвращает значения для фильтрации основного запроса.