2013-10-13 46 views
0

我有兩個表和標題說我需要像一個雙內部聯接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語句,這很容易,但我希望只有一條語句可以處理我需要的所有數據。

在此先感謝大家閱讀任何暗示和建議。

+0

你可能想閱讀有關處理分層數據表封.. –

回答

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 
相關問題