2012-06-04 142 views
0

http://i.stack.imgur.com/mbUTI.jpgSQL多表選擇查詢

我想做一個多選擇在一個查詢,其中一個表有許多表中的數據。 我有四個表將它合併成一個單一的輸出。 這是我的表格的圖像。

我想選擇所有,不想從其他表只是主表中的其他數據與所有其他表的名稱

曾嘗試以下,但它不工作。

select * from project_content 
    left Join project_master on project_master.id = project_content.p_id 
    left Join project_content_menu on project_content_menu.type_id = project_content.p_c_id 
    left Join project_menu_master on project_menu_master.id = project_content.m_id 


    select * from project_content 
    left Join project_master on project_master.id = project_content.p_id 
    left Join project_content_menu on project_content_menu.type_id = project_content.p_c_id 
    left Join project_menu_master on project_menu_master.id = project_content.m_id 


    select distinct(*) from project_content 
    left OUTER Join project_master on project_master.id = project_content.p_id 
    left OUTER Join project_content_menu on project_content_menu.type_id = project_content.p_c_id 
    left OUTER Join project_menu_master on project_menu_master.id = project_content.m_id 

    select * from project_content ,project_master,project_content_menu,project_menu_master 
    where project_master.id = project_content.p_id and project_content_menu.type_id = project_content.p_c_id and project_menu_master.id = project_content.m_id 

    select pc.id as id , pm.name as pname , pmm.name as menuname , pcm.name as contentname , pc.name as name 
    from 
    project_content as pc, 
    project_master as pm, 
    project_content_menu as pcm, 
    project_menu_master as pmm 
    where 
    pm.id = pc.p_id 
    and 
    pcm.type_id = pc.m_id 
    and 
    pmm.id = pc.p_c_id 

回答

0

選擇如果我不正確地使用你,你只需要從主表中獲取數據,但是使用名稱而不是其他表中的外鍵?如果是這樣的話,那麼:

SELECT pc.id, pm.name, pcm.name, pmm.name, pc.name, pc.desc, pc.thumb, pc.src, pc.status 
FROM project_content AS pc 
LEFT JOIN project_master AS pm ON pm.id = pc.p_id 
LEFT JOIN project_content_menu AS pcm ON pcm.type_id = pc.p_c_id 
LEFT JOIN project_menu_master AS pmm ON pmm.id = pc.m_id 
+0

是你讓我正確。 但我在主表中獲得重複行。 請參閱[1]:http://i.stack.imgur.com/Vaf9L.jpg –

+0

@ user1418790:那是因爲您在project_content_menu type_id列中有重複的內容 - 應該不是外鍵而是它的id列嗎? –

0

我不是SQL專家,但可以嘗試使用UNION運算符。像這樣:

select names 
from table1 
where lastname like k% 
UNION 
select names 
from table2 
where lastname like k% 

本文將結合從Table 1和Table結果,並且其中所述姓氏開始具有k顯示在結果唯一的名稱。所以,如果有JOHN KRAMER和JOHN KUTCHER,那麼只有JOHN會顯示一次。
如果你想重複條目,也然後使用UNION ALL

0

我不知道,我明白你的問題很好,但如果你需要的所有記錄加在一起,你應該使用:UNION ALL

像:

select name from project_content 

UNION ALL 

select name from project_master 

UNION ALL 

select name from project_master 

UNION ALL 

select name from project_menu_master 

只是可以肯定,你在每個列的相同數量與同類型