省城市sql题两表关联 两表有相同字段select查询可现实 thinkphp里查询无法显示两个相同字段
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) "广东"
}
}
正常显示,如题目的要求!除了修改字段名称还有其他的方法吗?问朋友,朋友说只能修改字段名称...