首页 > 解决方案 > 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),以及preBookingusrBooking表匹配的记录。

例如,我想获取这样的记录(如果我在参数中传递 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');

标签: phpmysql

解决方案


似乎您的 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');

推荐阅读