2017-10-09 76 views
0

如何輸出formulation_name而不是當前輸出的id。我已經尋找了一段時間的答案,但沒有得到正確的解決方案。如何在mysql中輸出名稱而不是外鍵ID?

在表object,formulation_fk列中是表formulationid的外鍵。這是我的兩張桌子。

datatable

我曾與下面的查詢輸出NameFormulation id遠來的部份。但是應該怎麼查詢才能在表object中顯示formulation_name而不是id

<?php 
    require_once 'db_connect.php'; 

    $output = array('data' => array()); 

    $sql = "SELECT * FROM object"; 
    $query = $connect->query($sql); 

    while ($row = $query->fetch_assoc()) { 

     $output['data'][] = array(
      $row['name'], 
     ); 
} 

OutputTable

預先感謝您的建議。

+2

編寫代碼谷歌如何做一個內部連接 – ADyson

+2

你需要學習如何做連接。他們應該包含在任何介紹性的SQL教程中。 – Quentin

回答

1

inner join執行表。在您的圖表中,你提到的表是對象,但SQL查詢與output。我你提到剛剛與object表從圖

"SELECT object.name,formulation.formulation_name as formulation FROM object INNER JOIN formulation ON object.formulation_fk = formulation.id" 
+0

非常感謝。這是我的形象中的一個錯字。但你的解決方案完美運作。我非常感謝幫助。 – Ashonko

0

使用JOIN

$sql = "SELECT * FROM object INNER JOIN formulation ON object.formulation_fk = formulation.id"; 

BTW:更好的結構應該是:

Object: object_id, object_name, formulation_id 
Formulation: formulation_id, formulation_name 

你將避免名稱的歧義。

+0

感謝您對結構的建議,但我很抱歉查詢返回錯誤。 – Ashonko

+2

@RajibBiswas這是因爲答案是建議你先改變你的表名(因此這個詞「結構」)。恕我直言,這只是一個命名約定的問題,但這裏建議的更常見的是您的命名(即將_id放在末尾,以便與主鍵字段相匹配,而不是最後的_fk_)。但這只是一個意見問題。 – ADyson

+0

當主鍵和外鍵具有相同的名稱時,可以使用'LEFT JOIN table USING(key_name)' – bato3

相關問題