У меня есть две таблицы A & B.
id | name | num
id | date | roll
id в таблице B является внешним ключом, который связан с id в таблице A.
Я хочу получить содержимое таблицы B, где указан id, а также вместе с этими данными мне нужно имя, чей id указан в таблице A.
Я погуглил и нашел несколько странных ключевых слов LEFT, JOIN, но не смог их понять.
Мне нужно получить дату и ролл из таблицы B и имя из таблицы A в одном запросе. (id является внешним ключом)
Плагин, который я использую, к сожалению, не позволяет делать несколько запросов, разделенных запятыми, поэтому мне нужно сделать оба SELECT
в одном запросе.
Объединение таблиц - это фундаментальный принцип реляционных баз данных. В вашем случае A и B связаны столбцом id
, что означает, что вы можете использовать синтаксис, подобный этому:
SELECT a.id, a.name, a.num, b.date, b.roll
FROM a
INNER JOIN b ON a.id=b.id;
INNER JOIN
означает, что вы увидите только те строки, где есть совпадающие записи в A и B. Если вам нужны все строки в A и совпадающие записи в B, вы можете изменить INNER JOIN
на LEFT JOIN
. И наоборот, если вам нужны все записи из B и только совпадающие записи из A, используйте RIGHT JOIN
. Наконец, если вам нужны все записи из обеих таблиц, совпадающие или нет, вы можете использовать FULL JOIN
.
Чтобы получить нужный результат, необходимо объединить эти таблицы.
SELECT b.*, a.name FROM tableB AS b INNER JOIN tableA as A ON (b.id=a.id);
Этот запрос вернет все из таблицы B и name
из таблицы A, где ID из таблицы B совпадает с ID из таблицы A.
Для получения результата из двух таблиц, связанных внешним ключом, необходимо объединить таблицы.
Найдите нижеприведенный запрос так, как вы хотите получить результат:
SELECT name, date, roll
FROM A
INNER JOIN B
ON A.id = B.id;