Представьте себе эти таблицы
лица
id name
1 John
2 Jane
3 Joe
4 Jill
Вещи
id name
1 Apple
2 Banana
3 Carrot
Имеет
pid tid
1 1
1 2
2 3
Где Has
— отношение «многие ко многим» между Person
s и Thing
s. Как мне получить информацию об исходной родительской таблице для всех Person
и Thing
, которые имеют отношения?
В основном что-то вроде:
pname tname
John Apple
John Banana
Jane Carrot
Это звучит как одна из самых фундаментальных вещей SQL, поэтому я знаю, что это основной вопрос, но я не смог правильно сформулировать его, поэтому я не смог найти ответы во время поиска.
Ниже приведен запрос, который я пробовал. Я знаю, что это будет только первый шаг, так как он задействует Person
, но не знаю, как получить Things
.
SELECT
*
FROM
person p
INNER JOIN has h
ON p.id = h.pid;
Отредактировано, чтобы добавить то, что у меня есть до сих пор. Это получает все Person
, у которых есть отношения. Я понимаю, что вы имеете в виду под необходимостью снова присоединиться, но я не уверен, что именно. Будет ли это JOIN
ing Thing
с этим промежуточным запросом на thing.id = h.id
?
Итак, вы продолжаете:
SELECT . . . -- the columns you want
FROM person p INNER JOIN
has h
ON p.id = h.pid INNER JOIN
thing t
ON t.id = h.tid;
Подсказка:
JOIN
. и сноваJOIN
. Можете ли вы показать запрос, который вы пробовали?