2011-10-06 40 views
1

我有2個表格(如圖)第一個是頁表(cvl_pages)第二個是mysettings表。MySql選擇JOIN問題。只是不知道該怎麼辦

在我的設置表,你會看到這樣的列:fav1fav2fav3fav4fav5fav6 - 在這些領域的整數對應的cvl_pages表中找到的Page_ID

我試圖寫一個select語句將從cvl_pages表,其中PAGE_ID =最愛1直通6.

然後我需要創建頁面標題變量Page_IDPage_Titlefunction選擇/功能對應到fav1fav2fav3 ...等

我有一個很難把它一起在我的腦海...不對每個「最愛」

創建一個單獨的SELECT語句

我想我需要一些幫助創建一個選擇語句,它會給我每個fav字段的正確頁面標題和功能。

enter image description here

enter image description here

謝謝!!!!

+1

@GolezTrol:這不是很漂亮,尤其是新的SO用戶,這可能是他們自己的網站。這可能很有趣,但重要的是,SO預計會是公民。閱讀常見問題解答:http://stackoverflow.com/faq – mellamokb

+0

這很有趣。 – mitch

+0

@mellamokb我不是故意冒犯任何人,也不是不文明。我只是誤解了網址,並認爲這很有趣。我甚至認爲它是一個設計師網站的酷炫大膽的名字。我已閱讀常見問題解答:「以同樣的尊重對待其他人,你希望他們對待你。」和「帶來你的幽默感」。我想我都是。 – GolezTrol

回答

1

您必須加入每個不同的最愛,但你可以做,在一個查詢:

select 
    s.*, /* or more specific fields you need from s */ 
    f1.Page_Title as Page_Title1, 
    f1.function as function1, 
    f2.Page_Title as Page_Title2, 
    f2.function as function2, 
    f3.Page_Title as Page_Title3, 
    f3.function as function3, 
    f4.Page_Title as Page_Title4, 
    f4.function as function4, 
    f5.Page_Title as Page_Title5, 
    f5.function as function5, 
    f6.Page_Title as Page_Title6, 
    f6.function as function6 
from 
    mysettings s 
    inner join cvl_pages f1 on f1.Page_Id = s.fav1 
    inner join cvl_pages f2 on f2.Page_Id = s.fav2 
    inner join cvl_pages f3 on f3.Page_Id = s.fav3 
    inner join cvl_pages f4 on f4.Page_Id = s.fav4 
    inner join cvl_pages f5 on f5.Page_Id = s.fav5 
    inner join cvl_pages f6 on f6.Page_Id = s.fav6 
+0

哇,我不會說謊...我迷路了。我沒有看到提到實際的表名「mysettings」....我仍然試圖學習後端編程。你認爲你可以提供更多的細節......因爲我不確定上述聲明是如何工作的。抱歉! – mitch

+0

它被命名爲'mysettings',對不起,我認爲它只是'settings'。我做了一些修改,希望現在更清楚。 – GolezTrol

+0

要清除它。 's'和'f1'到'f6'是表'mysettings'和'cvl_pages'的別名*。這樣,您可以保持您的查詢更緊湊,並且多次使用同一個表。後者需要在'mysettings'的每個關鍵詞上加入pages表。 – GolezTrol

0

你爲什麼不能做一個簡單的加入?是這樣的:

SELECT Page_ID, Page_Title FROM cvl_pages p join mysettings s 
    on p.Page_ID in (s.fav1, s.fav2, s.fav3, s.fav4, s.fav5, s.fav6) 
    where s.User_ID = 43; 
+0

我認爲這會工作,但我如何爲每個page_title創建一個變量?我需要他們對應每個收益。類似: 而($行= mysql_fetch_array($ RESULT2)) \t \t { \t \t \t $ sideBar1 = $行[ 'Page_Title.fav1']; \t \t \t $ sideBar2 = $ row ['Page_Title.fav2']; \t \t \t $ sideBar3 = $ row ['Page_Title.fav3']; \t \t \t $ sideBar4 = $ row ['Page_Title.fav4']; \t \t \t $ sideBar5 = $ row ['Page_Title.fav5']; \t \t \t $ sideBar6 = $ row ['Page_Title.fav6']; \t \t} – mitch

0

右鍵在這種​​情況下,你應該使用GolezTrol的答案,但使用LEFT JOIN,而不是內部連接:

SELECT settings.User_ID, 
    f1.Page_ID as Page_ID1, f1.Page_Title as Page_Title1, 
    f2.Page_ID as Page_ID2, f2.Page_Title as Page_Title2, 
    f3.Page_ID as Page_ID3, f3.Page_Title as Page_Title3, 
    f4.Page_ID as Page_ID4, f4.Page_Title as Page_Title4, 
    f5.Page_ID as Page_ID5, f5.Page_Title as Page_Title5, 
    f6.Page_ID as Page_ID6, f6.Page_Title as Page_Title6, 
    FROM mysettings s 
    left join cvl_pages f1 on s.fav1 = f1.Page_ID 
    left join cvl_pages f2 on s.fav2 = f2.Page_ID 
    left join cvl_pages f3 on s.fav3 = f3.Page_ID 
    left join cvl_pages f4 on s.fav4 = f4.Page_ID 
    left join cvl_pages f5 on s.fav5 = f5.Page_ID 
    left join cvl_pages f6 on s.fav6 = f6.Page_ID 
    where s.User_ID = 43;