查询根据该行中两个字段的匹配选择两行

时间:2014-10-13 20:01:37

标签: sql sql-server tsql

我正在尝试构建一个查询,它将为我提供一个两行相互的字段,但我需要一些帮助来构建正确的查询。这是我在Excel中呈现的数据(在SQL表中它是相同的):

enter image description here

我们有两个下拉菜单,一个用于旅程的起点和终点。一旦用户选择了起点,就会过滤下拉列表以仅获得从该起点开始的目的地。

现在,根据屏幕截图,如果用户选择'Mazarron'作为起点而'Albacete'作为终点,我想根据起点和终点获取提供该选项的行的名称,以及这也意味着终点的止损单需要比起点的止损单值更大。在我们的例子中,我应该得到'Aguilas-Madrid'和'Puerto de Mazarron-Madrid',而不是'Puerto de Mazarron-Madrid'线。

当我使用两个参数或@start和@end点旅行时,过滤这些结果的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

这是一个相对简单的示例,还有其他方法可以做到这一点。但这应该可以让你得到你想要的东西。

没有停止订单

select line 
from mytable 
where nameoftown = @end 
and line in (
select line from mytable where nameoftown = @start)

根据停止订单要求更新,这有点复杂,我还没有经过测试,但应该是您需要的:

select line 
from mytable end
join (select line, stoporder from mytable where nameoftown = @start) start 
     on start.line = end.line and start.stoporder < end.stoporder
where end.nameoftown = @end