Pergunta

Esta é a minha consulta:

$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
');

Mas como saída o resultado? Isso funciona, mas só recebe a última descrição (origin.description):

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

Isso não funciona:

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

Ou eu deveria mudar o nome das colunas (por exemplo type_of_source_description)?

Foi útil?

Solução

Isso realmente tem muito pouco a ver com CodeIgniter e muito com a forma como mysql_fetch_assoc fornece os resultados da consulta. A solução é que você deve renomear as colunas dentro da consulta usando "AS", por exemplo.

select type_of_source.description as type_of_source_description, origin.descripotion as origin_descripotion from ....

Outras dicas

Apenas apelido as colunas na instrução SELECT. Não modifique o seu banco de dados. A prática padrão é usar aliasing em suas instruções SQL.

De docs do PostgreSQL para "SELECT":

"Usando a cláusula AS nome_de_saída, outro nome pode ser especificado para uma coluna de saída."

PostgreSQL SELECIONAR

Eu recomendo não usar dessa forma, em vez disso você pode renomear colunas de saída com "AS".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top