情况
我们正在实施一个搜索,您可以通过从哪里到您想去的地方搜索时间表。
定义
DB模式
日程安排
腿
示例
日程安排:
|---------|--------------|--------------|
| ID | Origin | Destination |
|---------|--------------|--------------|
| 1 | Airport A | Airport B |
|---------|--------------|--------------|
| 2 | Airport B | Airport C |
|---------|--------------|--------------|
| 3 | Airport C | Airport D |
|---------|--------------|--------------|
| 4 | Airport D | Airport E |
|---------|--------------|--------------|
| 5 | Airport E | Airport F |
|---------|--------------|--------------|
伪码
问题
这段代码可以工作,但我对生成的代码有点不满意。我想知道是否有一种方法可以重构代码,以便减少步骤,减少循环,从而使代码更快、更好地调试。
有什么建议吗?
提前感谢!
发布于 2018-12-06 23:58:26
第一个查询返回在from和to上完全匹配的腿,您不需要在同一个表上使用内部IN (SELECT...)。只需在Leg上直接过滤:
SELECT
ScheduleID AS ID
FROM
Leg
WHERE
Origin_ID = from
AND ETD > DateAdd(day, -1, getUTCDate())
AND Destination_ID = to
GROUP BY
ScheduleID, ETD
ORDER BY
ETD第二个查询看起来没问题。
代码的第三部分对我来说没有任何意义。
https://stackoverflow.com/questions/53661131
复制相似问题