【发布时间】:2009-12-19 00:12:15
【问题描述】:
我有一个数据库如下:
---------------------------------------------------------------
| module_name | category | content |
---------------------------------------------------------------
| module1 | category1 | content |
| module2 | category1 | content |
| module3 | category2 | content |
| module4 | category3 | content |
| module5 | category2 | content |
---------------------------------------------------------------
我希望能够创建结果组,但如果不嵌套 MySQL 查询,我无法找出最快、最有效的方法。结果应如下所示(忽略样式):
---------------------------------------------------------------
| module1 | category1 | content |
| module2 | category1 | content |
---------------------------------------------------------------
---------------------------------------------------------------
| module3 | category2 | content |
| module5 | category2 | content |
---------------------------------------------------------------
---------------------------------------------------------------
| module4 | category3 | content |
---------------------------------------------------------------
我的代码如下:
$query = 'SELECT'
. ' DISTINCT'
. ' category AS name'
. ' FROM #__table'
. ' WHERE enabled = 1';
$db->setQuery($query);
$categories = $db->loadObjectList();
foreach ($categories as $category) {
$query = 'SELECT'
. ' module_name'
. ' FROM #__table'
. ' WHERE enabled = 1 AND category = \'' . $category->name . '\''
. ' ORDER BY id';
$db->setQuery($query);
$results = $db->loadObjectList();
foreach ($results as $result) {
echo $result->module_name;
}
}
这是一个有效的嵌套查询,但有更好的方法吗?
【问题讨论】: