2010-10-18 3 views
2

Je cours une requête dans MYSQL en utilisant LEFT JOIN pour obtenir les utilisateurs et leurs groupes d'utilisateurs. Les deux tables ont des colonnes nommées id. Mon résultat est retourné dans un tableau (PHP) de sorte que j'ai un tableau avec toutes les données de champ, mais aussi un seul tableau ["id"].Comment identifier les champs de différentes tables portant le même nom dans un résultat de requête JOIN?

Voilà ma requête à ce jour:

SELECT usr.id, usg.id FROM utilisateurs de LEFT JOIN (user_groups usg) SUR (usg.id = usr.group_id)

Maintenant la solution facile serait de renommer les champs en noms uniques comme usr_id et usg_id mais je préfère ne pas le faire. Je préférerais que mes valeurs retournent automatiquement au tableau en tant que tableau ["usr.id"].

(j'utilise le cadre CodeIgniter qui fait automatiquement le reste, mais je pourrais réécrire certaines choses là-bas si seulement MySQL pourrait retourner l'alias de table avec elle)

Répondre

2

utiliser le « comme » mot-clé

select table1.id as table1Id, table2.id as table2Id 
from table1 
join table2 
on somecondition 
+0

I savoir que c'est une solution, mais j'ai oublié de mentionner que je voudrais éviter cela, donc ça va automatiquement –

0

simplement dire mysql que vous voulez faire une à la volée en utilisant renomme « comme « nouveaunom » »

SELECT usr.id as 'user_id', usg.id FROM users usr LEFT JOIN (user_groups usg) ON (usg.id=usr.group_id) 

ou en utilisant la doctrine elle-même le faire de style DQR:

$resultArray = Doctrine_Query::create() 
         ->select('usr.id, usg.id') 
         ->from('users usr') 
         ->leftJoin('usr.user_groups usg') 
         ->setHydrationMode(Doctrine::HYDRATE_ARRAY) 
         ->execute(); 

cela devrait retourner un tableau où vous pouvez accéder à la fois id est comme ça:

$resultArr['id']; //for accessing the usr.id 

et eiter l'une de ces deux en fonction de l'association que vous avez fait entre les utilisateurs et user_groups

$resultArr['user_groups']['id']; //for accessing the usg.id if it is one to one 
$resultArr['user_groups'][0]['id']; //for accessing the usg.id if it is a one to many 
+0

cela dépend réellement comment vous avez fait les associations entre les utilisateurs et les groupes d'utilisateurs – ITroubs

Questions connexes