2013-05-25 4 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 | 

И это код сортирует результаты по значениям «sort_order» из «Таблицы 1»:

$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 
Смежные вопросы