Php 从两个表中选择所有行,从最后一个表中选择一行

Php 从两个表中选择所有行,从最后一个表中选择一行,php,mysql,Php,Mysql,我想从两个表中选择所有行,从最后一个表中选择一行 我的表格如下: tbl_order order_id order_no -------- -------- 1 1000 2 1001 3 1002 tbl_assign assign_id order_id central_status --------- -------- -------------- 1 1

我想从两个表中选择所有行,从最后一个表中选择一行

我的表格如下:

tbl_order

order_id    order_no
--------    --------
   1         1000
   2         1001
   3         1002

tbl_assign

assign_id    order_id    central_status
---------    --------    --------------
    1           1              1
    2           2              1
    3           3              1

tbl_unit_status

status_id    assign_id    status_status
---------    ---------    -------------
    1            1             Work
    2            2             Cutter
    3            2             Stitch
    4            1             Stitch
从上面的3个表中,我想得到如下结果:

order_id    order_no    assign_id    status_status
--------    --------    ---------    -------------
   3          1002          3           {null}
   2          1001          2           Stitch
   1          1000          1           Stitch
我试过下面的代码

选择*从tbl\u订单o左连接tbl\u在a上分配a.order\u id=o.order\u id左连接选择*从tbl\u单元状态u按u.status\u id描述订单限制uu上1个uu.assign\u id=a.assign\u id其中a.central\u status=1按a.assign\u id描述

但结果是

order_id    order_no    assign_id    status_status
--------    --------    ---------    -------------
   3          1002          3           {null}
   2          1001          2           {null}
   1          1000          1           Stitch
我哪里做错了。我试了很多。请帮我找到答案。谢谢。

像这样试试:

SELECT o.*,u2.assign_id,u2.status_status FROM tbl_order o 
LEFT JOIN tbl_assign a ON a.order_id = o.order_id LEFT JOIN 
(SELECT u.assign_id,max(u.status_id) as maxid FROM tbl_unit_status u  group by u.assign_id) 
uu ON uu.assign_id = a.assign_id
LEFT JOIN tbl_unit_status  u2 on u2.status_id = uu.maxid
 WHERE a.central_status = 1 ORDER BY a.assign_id DESC
试试这个

SELECT * FROM tbl_order o LEFT JOIN tbl_assign a ON a.order_id = o.order_id 
LEFT JOIN (SELECT * FROM tbl_unit_status u ORDER BY u.status_id DESC LIMIT 2) 
uu ON uu.assign_id = a.assign_id WHERE a.central_status = 1 ORDER BY 
a.assign_id DESC

使用限制1时,您只能与tbl_unit_status中具有assign_id 1的最后一行进行比较。

这是一个很好的尝试,但现在我得到了4行。我只需要3行,其中order_id不应重复。无法将限制设置为2,因为表行将动态更改。