2012-06-03 43 views
0

我有兩個表,filesservers。這裏的架構:從另一個表中選擇服務器名稱

f_id, s_id, u_id, name, size, downloads, uploaded 

s_id, name, description, disk_space, used_space, enabled 

現在,我想獲取有關特定文件以及它託管的服務器的一些信息。在files表中,這由s_id列確定,該列是servers表的外鍵。我想要檢索文件的名稱,大小,上傳時間以及它所在的服務器。我試過這個:

public function get_file_details() 
{ 
    $sql= 'SELECT name, size, uploaded, server 
      FROM `files` f 
      JOIN `servers` s 
      ON f.s_id = s.u_id 
      WHERE f_id = ? 
      LIMIT 1'; 
} 

但它不起作用。我究竟做錯了什麼?

+0

你真的在執行SQL查詢嗎?什麼_doesn't工作?_你收到一個錯誤? – Litty

+0

Woops,對不起。這是錯誤:字段列表中的'列名'不明確。我想我理解它的含義(它不知道'name'來自哪裏),但我不知道如何告訴它來自'servers'。 –

回答

1
public function get_file_details() 
{ 
    $sql= 'SELECT f.name, size, uploaded, s.name 
      FROM `files` f 
      JOIN `servers` s 
      ON f.s_id = s.s_id 
      WHERE f_id = ? 
      LIMIT 1'; 
} 

3改變:名稱=> f.name,服務器=> s.name,ON f.s_id = s.u_id => ON f.s_id = s.s_id

+0

爲你做了這項工作? – Gavriel

1

它示出了本錯誤,因爲名稱字段存在於兩個表中,所以它變得不明確。爲了避免這個錯誤總是添加表名別名 試試這個

SELECT f.name, f.size, f.uploaded, s.name 
      FROM `files` f 
      JOIN `servers` s ON f.s_id = s.s_id 
      WHERE f_id = ? 
      LIMIT 1' 
相關問題