2008-10-09 8 views
1

C'est ma requête:Comment générer des données à partir de tables avec les mêmes noms de colonne dans CodeIgniter?

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

Mais comment sortir le résultat? Cela fonctionne, mais obtient seulement la dernière description (origin.description):

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

Cela ne fonctionne pas:

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

Ou dois-je renommer les colonnes (par exemple type_of_source_description)?

Répondre

5

Cela a en fait très peu à voir avec CodeIgniter et beaucoup avec comment mysql_fetch_assoc fournit les résultats de la requête. La solution consiste à renommer les colonnes dans la requête en utilisant "AS", par ex.

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

en utilisant postgres, est-ce toujours la même chose? – meleyal

+0

donc je peux aussi bien renommer les colonnes db je suppose ... – meleyal

+0

Je ne vois pas pourquoi cela ne devrait pas être, "AS" est la syntaxe SQL standard, et je parierais que les fonctions pg_ * de PHP fonctionnent très bien comme mysql_ * ceux – pilsetnieks

2

Juste alias les colonnes dans l'instruction SELECT. Ne modifiez pas votre base de données. La pratique standard consiste à utiliser un alias dans vos instructions SQL.

A partir de docs de PostgreSQL pour "SELECT":

"En utilisant la clause AS nom_sortie, un autre nom peut être spécifié pour une colonne de sortie."

PostgreSQL SELECT

1

Je recommande de ne pas utiliser de cette façon, au lieu, vous pouvez renommer des colonnes de sortie avec « AS ».

Questions connexes