У меня есть две таблицы, и, как говорится в названии, мне нужно что-то вроде двойного внутреннего соединения no. Я понятия не имею, работает ли это, но я считаю, что должен быть простой способ.Внутреннее соединение MySQL, где table2 child_id похож на table2 id
То, что я получил это заявление, которое работает отлично:
SELECT
t1.id img_id, t1.nav_id img_nav_id, t1.name img_name, t1.img_title img_title, t1.img_text img_text,
t2.id nav_id,t2.parent_id nav_parent_id, t2.name nav_name, t2.directlink nav_directlink
FROM images t1
INNER JOIN navigation t2
ON t2.id=t1.nav_id
ORDER BY RAND() LIMIT 0,101
Теперь t2 (навигационная таблица) выглядит следующим образом (таблица изображений)
+----+-----------+------------------+------------------+------+
| id | parent_id | name | directlink | rang |
+----+-----------+------------------+------------------+------+
| 1 | 0 | Home | home | 0 |
| 3 | 0 | Architektur | architektur | 1 |
| 7 | 0 | Design | design | 2 |
| 8 | 0 | Contact | contact | 3 |
| 11 | 3 | Surfabricaziun 5 | surfabricaziun_5 | 0 |
| 12 | 7 | Fluor | fluor | 1 |
| 13 | 7 | Maisa | maisa | 2 |
| 14 | 3 | Fuldera | fuldera | 3 |
и t1 выглядит следующим образом
+-----+--------+------+----------------------+-----------+----------+
| id | nav_id | rang | name | img_title | img_text |
+-----+--------+------+----------------------+-----------+----------+
| 700 | 11 | 80 | Siedlg_aussen_26.jpg | | |
вывод, который я получаю из инструкции sql:
+--------+------------+-------------+-----------+----------+--------+---------------+----------+------------------+
| img_id | img_nav_id | img_name | img_title | img_text | nav_id | nav_parent_id | nav_name | nav_directlink |
+--------+------------+-------------+-----------+----------+--------+---------------+----------+------------------+
| 625 | 11 | 07.jpg | 11 | | 11 | 3 | Surfabri | surfabricaziun_5 |
| 744 | 20 | 85.jpg | | | 20 | 7 | Test | test |
сейчас Что мне нужно или нужно: мне нужно получить родительское навигационное имя. Поэтому я хотел бы еще одно поле, называемое nav_parent_name where t2.parent_id = t2.id
и для этого я попытался
SELECT
t1.id img_id, t1.nav_id img_nav_id, t1.name img_name, t1.img_title img_title, t1.img_text img_text,
t2.id nav_id,t2.parent_id nav_parent_id, t2.name nav_name, t2.directlink nav_directlink,
t2.name nav_parent_name
FROM images t1
INNER JOIN navigation t2
INNER JOIN navigation t2
ON t2.parent_id = t2.id AS nav_parent_name
ON t2.id=t1.nav_id
ORDER BY RAND() LIMIT 0,101
, который не работает. Проблема: я ничего не знаю о соединении, возможно ли получить результат, который я хочу, или мне нужно написать новый оператор Sql, который был бы легким, но я хотел бы иметь только одно заявление, работающее для всех необходимых мне данных.
Заранее благодарим всех за любые предложения и советы.
вы можете прочитать о замыканиях таблиц для обработки иерархических данных .. –