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

[HELP] 多表联合查询返回的结果对象中如何区分不同表的相同字段

[复制链接]
发表于 2011-12-10 10:13:29 | 显示全部楼层 |阅读模式

RT,
我试了一下,posts表和users表都有id,但是使用 $row->id 只能返回 sql语句中最后选择的那个表的id

这个有没有解决办法?


比如说下面这句
PHP

$sql = "SELECT posts.id, users.id, posts.title, users.username, posts.time, posts.comments, posts.visits FROM posts JOIN users ON users.id = posts.user_id WHERE posts.type_id = '2'"
//用这个执行
return $this->db->query($sql);

复制代码


返回的对象交给view 怎样将users.id 和 posts.id 区别开?
发表于 2012-9-20 19:10:22 | 显示全部楼层
Ding 发表于 2012-9-20 18:32
我也遇到这个问题了,不过我这边字段很多   用as真心蛋疼啊

有一个好方法 和大家分享  比如你需要查找 accoun表中的id   而第二个表也同样有id这个字段   可以用这样的方法
PHP复制代码
$this->db->select('*,account.id as id');
$this->db->from();
$hhis->db->join();
$this->db->get();
复制代码
这样你在 result_array以后id这个字段就是你需要的 account表中的id
 楼主| 发表于 2011-12-10 10:13:49 | 显示全部楼层
上个帖子发错版块了,没人理~
 楼主| 发表于 2011-12-10 10:44:27 | 显示全部楼层
貌似有点眉目了~用select as
http://stackoverflow.com/questions/2564543/codeigniter-differentiate-field-names-in-joined-tables
发表于 2011-12-10 11:55:31 | 显示全部楼层
SQL复制代码
SELECT posts.id AS pid, users.id AS uid, posts.title, users.username, posts.TIME, posts.comments, posts.visits FROM posts JOIN users ON users.id = posts.user_id
复制代码


你看这样行不行……没有环境测试……不好意思……

点评

支持  发表于 2011-12-12 16:36
发表于 2011-12-12 13:07:30 | 显示全部楼层
用AS重命名
发表于 2012-9-20 18:32:08 | 显示全部楼层
我也遇到这个问题了,不过我这边字段很多   用as真心蛋疼啊
发表于 2016-12-4 09:22:20 | 显示全部楼层
Ding 发表于 2012-9-20 19:10
有一个好方法 和大家分享  比如你需要查找 accoun表中的id   而第二个表也同样有id这个字段   可以用这样 ...

很牛逼。没想到这个方法,表锅,感谢!

本版积分规则