我正在尝试简化当前的查询代码。是否有将两个查询合并为一个更简单的方法?
到目前为止,这是我尝试过的。虽然看起来确实很凌乱和笨拙。该查询请求所有客户端
SELECT * FROM clients ORDER BY name DESC
然后,我里面有另一个请求,以查找客户是否有预订
SELECT * FROM bookings WHERE client_id=$client_id AND done=0
“完成”表示作业是否完成,并且每个客户一次只能有1个未完成的作业。
说明:
该代码需要显示所有客户,并且如果客户有一个预订,并且如果另一个数据库返回结果,则预订按钮将不会显示,如果没有结果(即该客户以前的所有预订均为1),则为预订按钮出现。
我想你要:
select c.*, coalesce(b.done, 1) completed
from clients c
left join bookings b on b.client_id = c.client_id and b.done = 0
这将尝试booking
为每个客户端查找未完成的行。completed
结果集中的列包含0
客户端是否有未完成的行,否则为1
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句