2

这是我的查询:

$query = $this->db->query('
    SELECT archives.id, archives.signature, type_of_source.description, media_type.description, origin.description 
    FROM archives, type_of_source, media_type, origin                                                             
    WHERE archives.type_of_source_id = type_of_source.id                                                          
    AND type_of_source.media_type_id = media_type.id                                                              
    AND archives.origin_id = origin.id                                                                            
    ORDER BY archives.id ASC
');

但是如何输出结果呢?这有效,但只获取最后一个描述(origin.description):

foreach ($query->result_array() as $row)
{
    echo $row['description'];
}

这不起作用:

foreach ($query->result_array() as $row)
{
    echo $row['type_of_source.description'];
}

或者我应该重命名列(例如 type_of_source_description)?

4

3 回答 3

5

这实际上与 CodeIgniter 几乎没有关系,而与 mysql_fetch_assoc 如何提供查询结果有很大关系。

解决方案是您应该使用 重命名查询中的列"AS",例如

select type_of_source.description as type_of_source_description, origin.descripotion as origin_descripotion from ....
于 2008-10-09T13:09:10.493 回答
2

只需为 SELECT 语句中的列设置别名。不要修改您的数据库。标准做法是在 SQL 语句中使用别名。

来自 PostgreSQL 的文档"SELECT"

“使用子句 AS output_name,可以为输出列指定另一个名称。”

PostgreSQL 选择

于 2008-10-09T13:57:45.980 回答
1

我建议不要以这种方式使用它,您可以使用AS.

于 2008-11-14T11:50:11.123 回答