2012-09-18 131 views
-1

tbl_usersSQL条件显示记录

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

tbl_order

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 

我们怎么将给条件(顺序其他1)先显示未付款(pay_status)记录 然后e_id=0记录然后全部休息?

+0

你就不能'ORDER BY pay_status DESC'? – hims056

+0

我试过了,但我们如何给下一个条件? 未付 e_id = 0 – Anu

+0

下一个条件?哪一个? – hims056

回答

0

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; 

编辑:From OP's comment

如果要显示所有记录,但在特定的顺序,你只需要使用ORDER BY条款是这样的:

ORDER BY pay_status DESC, e_id ASC; 
+0

我们如何避免“where”条件.... 因为它只显示e_id = 0 输出就像 1)所有记录**未付** 2)当所有未付费记录结束时显示** e_id = 0 * * 3)当所有的e_id = 0记录显示**休息**全部 – Anu

+0

@Anu请参阅最新的答案。 – hims056

+0

@Anu由于你没有回复,我们无法帮助你。 – hims056

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 
+0

它没有运行! – Anu

+0

有什么错误?如果是的话是什么? –

+0

没有错误.. 未示出的值也,即使不为空 – Anu