Я не уверен, что это возможно. Но возможно ли выполнить соединение на 2 таблицах, но вернуть данные только для одной из таблиц. Я хочу присоединиться к двум таблицам на основе условия, но мне нужны только данные для одной из таблиц. Это возможно с SQL, если да, то как? После прочтения документов кажется, что когда вы делаете соединение, вы получаете данные для обеих таблиц. Спасибо за любую помощь!
Вы получаете данные из обеих таблиц, потому что соединение основано на " Декартовом продукте " + " Выбор ". Но после объединения вы можете сделать " Проецирование " с нужными столбцами.
SQL имеет простой синтаксис для этого:
Select t1.* --taking data just from one table
from one_table t1
inner join other_table t2
on t1.pk = t2.fk
Вы можете выбрать таблицу через псевдоним: t1.*
Или t2.*
. Символ *
означает "все поля".
Кроме того, вы можете включить where
, order by
или other types join, такие как outer join
или cross join
.
Обычно это делается с использованием exists
(или in
), если вы предпочитаете:
select t1.*
from table1 t1
where exists (select 1 from table2 t2 on t2.x = t1.y);
Хотя вы можете использовать join
, он рискует умножить количество строк в результирующем наборе - если в table2
есть повторяющиеся совпадения. Там нет никакой опасности таких дублей с использованием exists
(или in
). Я также считаю логику более естественной.
Типичный SQL-запрос имеет несколько предложений.
Предложение SELECT
указывает столбцы, которые вы хотите в своем результирующем наборе.
Предложение FROM
, которое включает операции JOIN
, упоминает таблицы, из которых вы хотите получить эти столбцы.
Предложение WHERE
фильтрует набор результатов.
Предложение ORDER BY
указывает порядок, в котором представлены строки в вашем результирующем наборе.
Есть несколько других предложений, таких как GROUP BY
и LIMIT
. Вы можете прочитать о них.
Чтобы сделать то, что вы спросите, выберите нужные столбцы, а затем укажите нужные вам таблицы. Что-то вроде этого.
SELECT t1.id, t1.name, t1.address
FROM t1
JOIN t2 ON t2.t1_id = t1.id
Это дает вам данные из t1
из строк, соответствующих t2
.
Pro tip: Избегайте использования SELECT *
. Вместо этого укажите нужные столбцы.
Если вы присоединитесь к 2 столам.
Вы можете использовать SELECT, чтобы выбрать нужные данные.
Если вы хотите получить таблицу данных, вы можете сделать это, просто выберите одну таблицу
SELECT b.title
FROM blog b
JOIN type t ON b.type_id=t.id;
Если вы хотите получить данные из двух таблиц, вы можете сделать это, выберите две таблицы.
SELECT b.title,t.type_name
FROM blog b
JOIN type t ON b.type_id=t.id;