---------- ---------- ----------
| TBL_1 | | TBL_2 | | TBL_3 |
---------- ---------- ----------
| id | | id | |TBL_1_id|
| foo | | bar | |TBL_2_id|
---------- ---------- ----------
I, kinda, имеет этот конкретный набор таблиц в MySQL. TBL_3 представляет собой составную таблицу привязки строк в TBL_1 и TBL_2 вместе. Я хочу выводить содержимое TBL_1 и TBL_2, запрашивая TBL_3, но я не могу понять концепцию JOIN
s.
Исходя из того, что я читал, это должно быть примерно так:MySQL Composite Table JOIN QUERY
SELECT * FROM tbl_3
RIGHT JOIN (tbl_1, tbl_2) ON (tbl_1.id = tbl_3.tbl_1_id, tbl_2.id = tbl_3.tbl_2_id)
WHERE tbl_3.id = 'some_id';
Я ничего не получаю. также, когда я настраиваю этот запрос, иногда строки возвращаются, но никогда не отображаются IDK. почему это?
** Вышеупомянутый запрос, то же самое, что и этот?
SELECT * FROM tbl_3
RIGHT JOIN tbl_1 ПО tbl_1.id = tbl_3.tbl_1_id
RIGHT JOIN tbl_2 ПО tbl_2.id = tbl_3.tbl_1_id
ГДЕ tbl_3.id = 'some_id';
** EDIT: в интерпретации запроса выше ж/множественное соединение, является покинул стол, на которые ссылаются 2 RIGHT JOIN
возвращаемые таблиц, является продуктом 1 RIGHT JOIN
?
Что вы желаемый результат? –
i wanna output tbl_1.'foo' и tbl_2.'bar' ... – Valkyrurr
Вы хотите вывести tbl_1.foo независимо от того, существует ли соответствующий tbl_2.bar при использовании tbl_3? Если это так, вы должны использовать внешние соединения. Если нет, используйте equijoin (обычное «соединение») с tbl_3, tbl_1 и tbl_2. В случае внутренних объединений вам нужно использовать tbl_3 в качестве таблицы фактов. В случае, когда значения tbl_2 не могут быть указаны, вам нужно будет подключиться к tbl_1 external к tbl_3 и tbl_2. –