Php 显示记录的sql条件

Php 显示记录的sql条件,php,mysql,sql,database,codeigniter,Php,Mysql,Sql,Database,Codeigniter,tbl_用户 u_id | u_type | u_first_name 1 U I_am_user 2 E I_am_emp 3 E I_am_emp2 tbl_订单 o_id | u_id | e_id | o_status | pay_status 1 1 0 pending Unpaid 2 1 2 pick Paid 3

tbl_用户

u_id | u_type | u_first_name
 1      U        I_am_user
 2      E        I_am_emp   
 3      E        I_am_emp2
tbl_订单

o_id | u_id | e_id | o_status | pay_status
  1     1       0    pending    Unpaid
  2     1       2    pick       Paid
  3     1       0    pending    Unpaid
  4     1       3    Pick       paid
我尝试了这个查询来显示用户和emp名称

SELECT o.*, a.u_first_name as user, b.u_first_name as emp
  FROM `tbl_order` AS o
       LEFT JOIN tbl_users AS a ON a.u_id = o.u_id 
       LEFT JOIN tbl_users AS b ON b.u_id = o.e_id

o_id | u_id | e_id |  user |  emp | pay_staus
我们如何给出条件(order by或other 1)以首先显示未付(
pay_status
)记录 然后
e\u id=0
记录然后全部休息?

尝试以下操作:

select * from(
SELECT o.*, a.u_first_name as user, b.u_first_name as emp, 0 as rnk 
FROM `tbl_order` AS o
LEFT JOIN tbl_users AS a ON a.u_id = o.u_id 
LEFT JOIN tbl_users AS b ON b.u_id = o.e_id
where pay_status='Unpaid'    
union all
SELECT o.*, a.u_first_name as user, b.u_first_name as emp, 1 as rnk 
FROM `tbl_order` AS o
LEFT JOIN tbl_users AS a ON a.u_id = o.u_id 
LEFT JOIN tbl_users AS b ON b.u_id = o.e_id
where pay_status!='Unpaid' and    e_id=0
union all
SELECT o.*, a.u_first_name as user, b.u_first_name as emp, 2 as rnk 
FROM `tbl_order` AS o
LEFT JOIN tbl_users AS a ON a.u_id = o.u_id 
LEFT JOIN tbl_users AS b ON b.u_id = o.e_id
where pay_status!='Unpaid' and    e_id!=0)a
order by rnk

您从
WHERE
子句中的查询应如下所示:

WHERE e_id = 0 OR pay_status = 'Unpaid'
ORDER BY pay_status DESC;
SELECT o.*, a.u_first_name as user, b.u_first_name as emp
  FROM `tbl_order` AS o
       LEFT JOIN tbl_users AS a ON a.u_id = o.u_id 
       LEFT JOIN tbl_users AS b ON b.u_id = o.e_id
  WHERE e_id = 0 OR pay_status = 'Unpaid'
  ORDER BY pay_status DESC;
ORDER BY pay_status DESC, e_id ASC;
所以你的整个查询应该是这样的:

WHERE e_id = 0 OR pay_status = 'Unpaid'
ORDER BY pay_status DESC;
SELECT o.*, a.u_first_name as user, b.u_first_name as emp
  FROM `tbl_order` AS o
       LEFT JOIN tbl_users AS a ON a.u_id = o.u_id 
       LEFT JOIN tbl_users AS b ON b.u_id = o.e_id
  WHERE e_id = 0 OR pay_status = 'Unpaid'
  ORDER BY pay_status DESC;
ORDER BY pay_status DESC, e_id ASC;
编辑:()

如果要按特定顺序显示所有记录,只需使用如下子句:

WHERE e_id = 0 OR pay_status = 'Unpaid'
ORDER BY pay_status DESC;
SELECT o.*, a.u_first_name as user, b.u_first_name as emp
  FROM `tbl_order` AS o
       LEFT JOIN tbl_users AS a ON a.u_id = o.u_id 
       LEFT JOIN tbl_users AS b ON b.u_id = o.e_id
  WHERE e_id = 0 OR pay_status = 'Unpaid'
  ORDER BY pay_status DESC;
ORDER BY pay_status DESC, e_id ASC;

你不能按付款方式下订单吗?我试过了,但我们如何给出下一个条件?未付的e_id=0您是指订单按1、2、3等顺序排列吗?输出就像是先显示所有未付的记录(在同一输出中),然后所有未付的都是e_id=0的记录,其余的都是。请发布您想要的结果集我们如何避免“where”条件。。。。因为它只显示e_id=0,所以输出类似于1)所有未付记录2)当所有未付记录超过显示e_id=0时3)当所有e_id=0记录超过显示rest时all@Anu由于您没有回复,我们无法为您提供更多帮助。选择o.*,a.u_first_name作为用户,b.u_first_name as emp FROM
tbl_order
as o LEFT JOIN tbl_users as a ON a.u_id=o.u_id LEFT JOIN tbl_users as b ON b.u_id=o.e_id此查询是否返回任何信息?