我有一张表events
,如下所示:
我有一张表contracts
,如下所示:
我想通过查询向contracts
表添加一个列(布尔值)。新列(evaluated
)是:
True
如果events
中至少有一行合同Id
匹配且sign_date
- check_date
)介于0和3之间当合同签入events
时,我们可以有多个事件。我需要查看是否至少有一个发生在合同签署的同一天或最多3天前。最好的方法是什么?左边的连接然后是我们匹配的另一个SELECT distinct
似乎是一种奇怪的方式。
答案 0 :(得分:2)
所以,像这样:
class MyClsName(DetailView):
template_name = "setup/code_install.html"
def get_object(self, queryset=None):
return MyModel.objects.get(Name=self.request.session['name'])
答案 1 :(得分:1)
您应该比较两个版本MAX
与DISTINCT
的解释(和资源使用情况):
SELECT DISTINCT c.*,
(CASE WHEN e.id IS NULL THEN 'N' else 'Y' end) AS boolCol
FROM contracts AS c
LEFT OUTER JOIN events AS e
ON c.id = e.id
-- I simplified your date logic
AND c.sign_date BETWEEN e.check_date - 3 AND e.check_date)
DISTINCT
更容易编写,优化程序可能会自动将其替换为GROUP BY
处理。