У меня есть таблица с двумя иностранными ключами, ссылающимися на одну и ту же таблицу. Как вы хотите распечатать содержимое соединения? Я использую SQLite
Таблица А
S.NO Col1 Col2
1 | a | b
2 | f | g
3 | d | e
ТаблицаB
S.NO Col3
a | apple
b | ball
f | frog
g | grape
d | dog
e | eat
Как распечатать следующее?
S.NO |Col1 | Col2 | Col3| Col4
1 | a |apple | b | ball
2 | f |frog | g | grape
3 | d |dog | e | eat
Я пытался
SELECT TableA.Col1, TableB.Col3, TableA.Col1
FROM TableA, TableB
WHERE TableA.Col1 = TableB.Col3
AND TableA.Col2 = TableB.Col3
Спасибо за вашу помощь.
Для присоединения не обязательно иметь FK. Необходимо и достаточно знать значения таблиц. Здесь для вас важно то, что определенные столбцы в определенных таблицах равны. Псевдонимы позволяют нам многократно использовать одно и то же значение таблицы.
Подойдут два внутренних соединения:
select
a.sno, a.col1, b1.col3, a.col2, b2.col3
from tablea a
join tableb b1 on b1.sno = a.col1
join tableb b2 on b2.sno = a.col2
Обратите внимание, что tableb
присоединяется дважды. В этом случае вам нужно каждый раз давать ему разные псевдонимы: b1
и b2
. В противном случае не было бы четкого способа ссылаться на столбцы из каждого столбца.
JOIN
в стандарте ANSI-92 SQL (более 25 лет назад), и его использование не рекомендуется