php - mysql Join显示错误的结果PHP
问题描述
我有以下三个表:
出租车:
id shopid taxiId status
1 20 1 1
2 20 2 1
3 20 3 2
4 20 4 1
5 21 1 1
...
预订前:
id shopid taxiId status
1 20 1 booked
2 20 3 booked
usr预订:
id shopid taxiId status
1 20 2 booked
2 20 4 booked
现在我想从taxi
表中获取所有记录(例如 shop id=20),以及preBooking
与usrBooking
表匹配的记录。
例如,我想获取这样的记录(如果我在参数中传递 shop id 20)
id shopid taxiId preBookingstatus usrBookingstatus
1 20 1 Booked Null
2 20 2 Null Booked
3 20 3 Booked Null
4 20 4 Null Booked
我尝试使用以下代码但无法正常工作,显示错误结果
$shopid="20";
$this->db->select('t.taxiId,ub.status as usrBookingstatus ,pb.status as preBookingstatus ');
$this->db->from('taxi t');
$this->db->join('usrBooking ub', 'ub.taxiId=t.taxiId','LEFT OUTER');
$this->db->join('preBooking pb', 'pb.taxiId=t.taxiId','LEFT OUTER');
$this->db->where('t.shopid', $shopid);
$this->db->order_by('t.taxiId', 'ASC');
解决方案
似乎您的 select 语句缺少几列。改变
$this->db->select('t.taxiId,ub.status as usrBookingstatus ,pb.status as preBookingstatus ');
至
$shopid=20;
$this->db->select('t.id, t.shopid, t.taxiId,pb.status as preBookingstatus , ub.status as usrBookingstatus ');
$this->db->from('taxi as t');
$this->db->join('usrBooking as ub', 't.taxiId=ub.taxiId','LEFT');
$this->db->join('preBooking as pb', 't.taxiId=pb.taxiId','LEFT');
$this->db->where('t.shopid', $shopid);
$this->db->order_by('t.taxiId', 'ASC');
推荐阅读
- node.js - 张量分割精度误差
- jquery - jquery中的委托函数
- sql - 返回连接 SQL Server 中不匹配的结果
- javascript - 将值从多个对象推送到数组
- javascript - 反应如何在数组列表集中添加一个额外的数组
- docker - 预创建检查错误:“这台计算机正在运行 Hyper-V。激活 Hyper-V 后,VirtualBox 不会启动 64 位 VM
- google-apps-script - Google 表格脚本 - 批量查找和替换
- javascript - document.write 更新输入值
- java - 更新 Spring Mongo 的服务器时间
- java - 执行 mvn clean package 时出错:InvalidAlgorithmParameterException:trustAnchors 参数必须为非空