SQL возвращает одну строку со столбцами в другой таблице, если соответствующая строка существует в другой таблице - PullRequest
0 голосов
/ 09 мая 2018

У меня есть две таблицы в базе данных, a & b.

Таблица b имеет внешний ключ, который ссылается на столбец в a.

Я пытаюсь выяснить, как получить одну строку из b со всеми столбцами из соответствующего a. Однако не все строки b будут иметь соответствующие строки в a.

Следующий SQL вернет все строки в b, которые имеют соответствующие строки в a со всеми столбцами из обеих таблиц.

"SELECT * FROM b INNER JOIN a ON b.foo = a.foo

Но я просто хочу одну строку, где b.foo равно некоторому значению с соответствующими столбцами из (если есть).

Итак, наивно:

"SELECT * FROM b INNER JOIN a ON b.foo = a.foo WHERE b.foo = 'some value'

Проблема в том, что иногда это не возвращает строк, поскольку в a может не быть соответствующей строки. Но мы гарантируем, что в b есть строка, где b.foo равна some value, и это всегда нужно возвращать.

Существует ли команда SQL, которая всегда может вернуть одну строку в b (учитывая, что строка в b существует) либо с соответствующими столбцами в a, либо, если соответствующий a не существует, только столбцы в b?

1 Ответ

0 голосов
/ 09 мая 2018

Да, если вы измените INNER JOIN на LEFT OUTER JOIN, вы всегда получите строку b, а значения столбца a будут равны NULL, если соответствующая строка не найдена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...