WEB2PY:使用JOIN从DB显示数据,但有一些条件

时间:2016-11-01 08:48:11

标签: join logic conditional-statements web2py

我遇到了一些逻辑问题。

  1. 我有3个表:db.service_requestdb.techniciandb.assigned
  2. 许多Service Request可以分配到Technician
  3. 表格db.assigned是所有已分配的service_requestTechnician的ID一起保存的地方
  4. 现在我要显示service_request的所有数据除了service_request之外没有分配给当前登录的Technician
  5. 有人请告诉我如何使这项工作?

    我拥有的是这一点,我得到的所有service request assigned已登录到当前登录的Technician,但没有得到所有其他service request还没有assigned

    query=db.service_request.id==db.assigns.sr_id
    query2=db.assigns.technician==user_id
    query4=((query)&(query2))
    get_assigned=db(query4).select(orderby=~db.service_request.date_time)
    

1 个答案:

答案 0 :(得分:0)

您可以执行left outer join并指定db.assigned.technician与当前用户匹配或db.assigned中没有匹配记录的条件:

left_join = db.assigned.on(db.service_request.id == db.assigned.sr_id)
current_user_assigned = db.assigned.technician == user_id
request_not_assigned = db.assigned.id == None
rev_request_time = ~db.service_request.date_time
rows = db(current_user_assigned | request_not_assigned).select(left=left_join,
                                                               orderby=rev_request_time)