Возможно ли иметь «нулевые строки» в SQL? - PullRequest
3 голосов
/ 11 июля 2011

Я использую MySQL.Допустим, у меня есть таблица A, B и C. Таблица A является базовой таблицей.У обеих таблиц B и C есть внешние ключи к таблице A. Однако я хочу вытащить строки, чтобы выходные данные выглядели примерно так:определенный ключ, запрос перемещается на C и прекращает выводить строки для B. Кажется, что это должно быть просто, но у меня, похоже, возникают проблемы с тем, как это сделать.вопрос, вероятно, не имеет смысла, но я не был уверен, как лучше описать сценарий.

Ответы [ 3 ]

6 голосов
/ 11 июля 2011

Думая об этом, OUTER JOIN не даст вам желаемый формат вывода. Попробуйте что-то вроде этого:

SELECT a.id AS A, b.id AS B, NULL AS C
FROM tableA a
INNER JOIN tableB ON a.id = b.fid
UNION
SELECT a.id AS A, NULL AS B, c.id AS C
FROM tableA a
INNER JOIN tableC ON a.id = c.fid
ORDER BY 1
2 голосов
/ 11 июля 2011

Абсолютно, да, LEFT JOIN - ваш самый острый нож.

SELECT A.*,B.*,C.* FROM A
LEFT JOIN B ON A.ID = B.REFID
LEFT JOIN C ON A.ID = C.REFID
0 голосов
/ 11 июля 2011

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

select a.id, b.id, c.id
from a
left join b on a.id = b.id
left jon c on a.id = c.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...