2013-01-18 46 views
0

假设我有两个表用户和MESSAGE连接两个表两次,并返回重复列名

USER - id,name 
MESSAGES - id,message_from,message_to,message_message 

所以序加入我

SELECT m.*,u1.*,u2.* FROM MESSAGES m 
    INNER JOIN USER as u1 
     ON(m.message_from = u1.id) 
    INNER JOIN USER as u2 
     ON(m.message_to = u2.id) 

因此,现在使用这种合作时,我的print_r出来的结果在codeigniter中,它没有用户message_to的用户数据。

而且我想,即使它返回的数据既为用户,那么它应该有一定的前缀区分

所以,我应该怎么办呢?

感谢和问候

+1

你有使用列别名或情况时,以区分。 – bonCodigo

+1

使用别名来解决这个问题 –

+0

非常感谢你 – cjmling

回答

1

最好是避免使用SELECT *语法。

我建议你指定你想要回来的列,并给那些名字不唯一的列别名。

SELECT m.id AS MessageId,m.message_from,m.message_to,m.message_message, 
    u1.id AS FromId, u1.name AS FromName, 
    u2.id AS ToId,u2.name AS ToName FROM MESSAGES m 
INNER JOIN USER as u1 ON(m.message_from = u1.id) 
INNER JOIN USER as u2 ON(m.message_to = u2.id) 
1

使用别名:

SELECT m.id, 
    u1.id as u1id, 
    u1.name as u1name, 
    u2.id as u2id, 
    u2.name as u2name 
FROM MESSAGES m 
INNER JOIN USER as u1 
    ON(m.message_from = u1.id) 
INNER JOIN USER as u2 
    ON(m.message_to = u2.id) 
+0

非常感谢你 – cjmling