2014-02-10 41 views
0

嗨我有兩個表一個名爲project_table和另一個稱爲投資表。加入問題與兩個表

project_table:

project_id    
project_name 
project_location   
project_phase   
project_capital  
project_total 
project_notes 
project_file 

投資表:

id 
project_id 
investor_id  
investment 

用戶表:

user_id 
user_name 
user_email 
user_pass 
user_role 
user_phone 

我STO從環用戶表(投資)投資和連接該表使用PROJECT_ID

我需要什麼項目表:從用戶 顯示投資項目的數據。意思是如果用戶登錄到管理員,他們只需要看到他們投資的項目,不需要顯示所有項目。用戶可以選擇投資於多個項目。 所以基本上如果詹姆斯登錄管理員,他只需要看看有詹姆斯投資的項目。

我對這個功能是:

public function list_all_projects_by_userid ($uid,$investor){ 

    $investors = DB::fetch('SELECT * FROM project_table JOIN investment on project_table.project_id = investment.project_id; ORDER BY project_id DESC'); 
    return $investors; 


     } 

的擊打它不工作,請幫助我。我正在使用具有提取方法的擴展PDO類。

回答

0

查詢中存在語法錯誤。 P1試試這個:

SELECT * FROM project_table JOIN investment on project_table.project_id = investment.project_id ORDER BY project_id DESC; 

如果您的加入標準不符合,請詳細解釋您的功能。

+0

它的外觀systax現在好了。謝謝你,但沒有得到我所需要的。 – BANNA

+0

是的。我想出了相同的。 「投資」中的您的investor_id在「用戶」表中爲user_id列出了一個外鍵。在這種情況下,您必須嘗試如下所示:SELECT * FROM project_table在project_table.project_id上加入投資= investment.project_id LEFT OUTER JOIN用戶ON user.user_id = investment.investor_id ORDER BY project_id DESC; – Neels

+0

@我想獲得所有當前登錄用戶投資的項目。我傳遞兩個變量到這個函數,但我不知道如何使這個工作:這可能通過只傳遞一個值?我知道當前記錄的用戶ID list_all_projects_by_userid($ uid)? – BANNA

0

你需要把';'整個查詢背後:

SELECT * 
FROM project_table JOIN investment 
    on project_table.project_id = investment.project_id 
ORDER BY project_id DESC; 
0

,因爲私募基金投資是如此的功能並不需要兩個參數的用戶,所以我一直是簡單

public function list_all_projects_by_userid ($uid){ 
$sql="select * from investment_table Inner Join project_table 
on project_table.project_id=investment_table.project_id 
where investment_table='".$uid."' ORDER BY investment_table.project_id DESC"; 
$investors = DB::fetch($sql); 
return $investors; 
} 
+0

謝謝,但它顯示一個錯誤完整性約束違規:1052命令子句中的列'project_id'不明確' – BANNA

+0

@ user3292518請參閱更新.. –

1

看一看這個!

SELECT * FROM project_table t JOIN investment i on t.project_id = i.project_id where t.project_name='john' ORDER BY project_id DESC; 

你放在「;」 ORDER BY之前的這是錯誤的。我想上面的查詢會做的伎倆。

你必須通過

PROJECT_NAME = '約翰'

按您的要求。

因爲你需要在usertable和project_table之間建立連接。

0

在你的函數中,你在命令前加了分號。

project_id出現在兩個表中。所以你應該提及在哪個表中你需要爲project_id設置順序。

公共職能list_all_projects_by_userid($ UID,$投資者){

$investors = DB::fetch('select * from investment_table, project_table where project_table.project_id=investment_table.project_id ORDER BY investment_table.project_id DESC'); 

回報$投資者; }