Rabbit_52 发表于 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 区别开?

Ding 发表于 2012-9-20 19:10:22

Ding 发表于 2012-9-20 18:32 static/image/common/back.gif
我也遇到这个问题了,不过我这边字段很多   用as真心蛋疼啊
有一个好方法 和大家分享比如你需要查找 accoun表中的id   而第二个表也同样有id这个字段   可以用这样的方法$this->db->select('*,account.id as id');
$this->db->from();
$hhis->db->join();
$this->db->get();这样你在 result_array以后id这个字段就是你需要的 account表中的id

Rabbit_52 发表于 2011-12-10 10:13:49

上个帖子发错版块了,没人理~

Rabbit_52 发表于 2011-12-10 10:44:27

貌似有点眉目了~用select as
http://stackoverflow.com/questions/2564543/codeigniter-differentiate-field-names-in-joined-tables

lymegg 发表于 2011-12-10 11:55:31

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

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

zhouli520 发表于 2011-12-12 13:07:30

用AS重命名

Ding 发表于 2012-9-20 18:32:08

我也遇到这个问题了,不过我这边字段很多   用as真心蛋疼啊:L:L

三零网科 发表于 2016-12-4 09:22:20

Ding 发表于 2012-9-20 19:10
有一个好方法 和大家分享比如你需要查找 accoun表中的id   而第二个表也同样有id这个字段   可以用这样 ...

很牛逼。没想到这个方法,表锅,感谢!
页: [1]
查看完整版本: 多表联合查询返回的结果对象中如何区分不同表的相同字段