0

私は 2 つのテーブルを持っています。タイトルにあるように、二重内部結合のようなものが必要です。それが機能するかどうかはわかりませんが、簡単な方法があるはずです。

私が持っているのは、うまく機能するこのステートメントです:

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_namewhere t2.parent_id = t2.idと呼ばれるもう1つのフィールドが欲しいので、このために私は試しました

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

これは機能していません。問題: join について何も知りませんが、必要な結果を得ることができるのか、それとも簡単な新しい SQL ステートメントを作成する必要がありますか?

提案やアドバイスを読んでくれたすべての人に、事前に感謝します。

4

1 に答える 1

1

いくつかのエイリアシングの問題があり、新しいものを追加する間、既存の結合を維持する必要があります

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,
    t3.name nav_parent_name
FROM images t1
INNER JOIN navigation t2
  ON t2.id=t1.nav_id
INNER JOIN navigation t3
    ON t2.parent_id = t3.id
ORDER BY RAND() LIMIT 0,101
于 2013-10-13T13:12:06.647 に答える