2013-05-25 23 views
0

我有那些兩個表:MySQL的 - 爲了通過從另一個表的列

表1:請將option_value

| option_value_id | option_id | sort_order | 
|=================|===========|============| 
| 1    | 1   | 1   | 
| 2    | 1   | 2   | 
| 3    | 1   | 3   | 

表2:option_value_description

| option_value_id | option_id | name | 
|=================|===========|========| 
| 1    | 1   | Small | 
| 2    | 1   | Medium | 
| 3    | 1   | Large | 

而這代碼根據「表1」中的「sort_order」值排序結果:

$option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "option_value WHERE option_id = '" . (int)$option_id . "' ORDER BY sort_order ASC"); 

我該如何保持顯示結果的相同代碼,但是通過表2中的「名稱」對結果進行排序?

謝謝。

回答

1

您可以使用INNER JOIN查詢,所以你會加入你的表,你將能夠通過第二個表

name列訂購
$option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "option_value a LEFT JOIN " . DB_PREFIX . "option_value_description b ON a.option_id = b.option_id AND a.option_value_id = b.option_value_id WHERE a.option_id = '" . (int)$option_id . "' ORDER BY v.name ASC"); 
+0

謝謝,這沒有訣竅:) –

+0

@NikolaNastevski你歡迎男人! – Fabio

1

您需要JOIN在option_value_id領域的兩個表:

select ovd.* 
from option_value ov 
    join option_value_description ovd on ov.option_value_id = ovd.option_value_id 
where ov.option_id = ? 
order by ovd.name