2016-11-01 8 views
0

У меня возникли проблемы с некоторой логикой.WEB2PY: отображение данных из DB с помощью JOIN, но с некоторым условием

  1. У меня есть 3 таблицы: db.service_request, db.technician и db.assigned
  2. Многие Service Request могут быть назначены на Technician
  3. Таблица db.assigned является, где все назначенные service_request сохраняются вместе с Technician «s ID
  4. Теперь я хочу отобразить все данные в service_request ЗА ИСКЛЮЧЕНИЕМ для service_request, который не был назначен текущему зарегистрированному Technician

Как кто-то скажет мне, как это сделать?

Что у меня есть это, я получаю все 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) 

ответ

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)