0

假设我有两个表 USER 和 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)

所以现在当我在 codeigniter 中 print_r 输出结果时,它没有用户 message_to 的用户数据。

而且我猜即使它为两个用户返回数据,它也应该有一些前缀来区分

那么我该怎么做呢?

谢谢并恭祝安康

4

2 回答 2

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)
于 2013-01-18T09:55:54.580 回答
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)
于 2013-01-18T09:56:45.367 回答