省份城市sql题两表关联 两表有相同字段select查询可现实 thinkphp里查询无法显示两个相同字段

省份城市sql题两表查询

1.写一条sql关联两个表要求显示字段如下 城市id 城市名称=name 省份名称=name

select c.id,c.name,p.name from city as c join province as p on c.pid=p.id;

结果:

省份城市两表联合查询结果

2.用thinkphp实现 关联两个表要求显示字段如下 城市id 城市名称=name 省份名称=name

     $model=new \Think\Model();
     $result=$model->query("select c.id,c.name,p.name from city as c join province as p on c.pid=p.id");
     var_dump($result);

输出的结果:

array(3) {
  [0]=>
  array(2) {
    ["id"]=>
    string(1) "1"
    ["name"]=>
    string(6) "湖南"
  }
  [1]=>
  array(2) {
    ["id"]=>
    string(1) "2"
    ["name"]=>
    string(6) "湖北"
  }
  [2]=>
  array(2) {
    ["id"]=>
    string(1) "3"
    ["name"]=>
    string(6) "广东"
  }
}

 查询出来的数据是不对的,是否sql语句写错了呢,没错的,因为两个表有两个相同的name字段,解决的办法是修改一个表的name字段就可以,比如修改city城市表的name字段为vname。

 $model=new \Think\Model();
 $result=$model->query("select c.id,c.vname,p.name from city as c join province as p on c.pid=p.id");
 var_dump($result);

运行结果:

array(3) {
  [0]=>
  array(3) {
    ["id"]=>
    string(1) "1"
    ["vname"]=>
    string(6) "长沙"
    ["name"]=>
    string(6) "湖南"
  }
  [1]=>
  array(3) {
    ["id"]=>
    string(1) "2"
    ["vname"]=>
    string(6) "武汉"
    ["name"]=>
    string(6) "湖北"
  }
  [2]=>
  array(3) {
    ["id"]=>
    string(1) "3"
    ["vname"]=>
    string(6) "广州"
    ["name"]=>
    string(6) "广东"
  }
}

正常显示,如题目的要求!除了修改字段名称还有其他的方法吗?问朋友,朋友说只能修改字段名称...

posted @ 2016-12-06 18:31  暗号已存在  阅读(1538)  评论(0编辑  收藏  举报