用户
 找回密码
 入住 CI 中国社区
搜索
查看: 911|回复: 2
收起左侧

[HELP] mysql的搜索信息求助如何查询多个表的内容

[复制链接]
发表于 2016-12-6 10:34:31 | 显示全部楼层 |阅读模式
message表user表
ID
UID
AT
CONTENT
UID
USERNAME
1
1
13
这是ID为1的人对ID13的人说的消息内容
1
张三
2
2
14
这是ID为2的人对ID14的人说的消息内容
2
李四
3
5
7
这是ID为5的人对ID7的人说的消息内容
5
赵五



现在有2张mysql的数据库表,一张为消息表,一张为用户表,我省略了部分信息,留下了这些字段。message表中,UID和AT字段分别表示发送者和接收者的用户UID,user表为用户uid和username的对应关系。

我想查询出来并展示这一的结果: “张三” 对 “李四” 说 : 这是。。。。

但是message表只能查询出uid信息,必须要和user表关联起来,才能得到username。

用了如下代码,能查询出uid的username,但是AT的对应username无法获取。
$this->db->from('message');
$this->db->join('user', 'user.uid = message.uid');
$this->db->where('message.uid', $id); //这个是查询的过滤信息,此处无关
return  $this->db->get()->result_array();
这样可以查询出  张三 对 uid13 说: 这是。。。  这样的格式, 我该怎么获取到at的uid对应的username信息呢?





发表于 2016-12-6 10:51:19 | 显示全部楼层
1. message where uid = 1
2. user where uid in (1, 13)
 楼主| 发表于 2016-12-6 11:36:15 | 显示全部楼层
谢谢版主,可能我没描述清楚,我当时想一次查询出结果,而且用in这个查出来,一旦数据多了,还对应不上号
开始是纠结于username的字段名重复,没法返回,后来我查询到了可以使用别名,这样可以用2个join语句,一次就查询出我想要的结果了。
要同时把查询字段和第二个join都用上别名
$this->db->select('message.id, message.uid, message.at, message.content, user.username,at_user.usernick AS at_username');
$this->db->from('message');
$this->db->join('user', 'user.uid = message.uid');
$this->db->join('user AS at_user', 'at_user.uid = message.uid');
$this->db->where('message.uid', $id); //这个是查询的过滤信息,此处无关
return  $this->db->get()->result_array();

本版积分规则