0

我有这两张桌子:

表 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 中的“名称”对结果进行排序?

4

2 回答 2

1

您需要JOINoption_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
于 2013-05-25T17:47:53.577 回答
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");
于 2013-05-25T17:48:04.170 回答