Mysql 如何在我的sql中应用多个或嵌套游标并将数据存储在临时表中?

Mysql 如何在我的sql中应用多个或嵌套游标并将数据存储在临时表中?,mysql,asp.net,stored-procedures,cursor,temp-tables,Mysql,Asp.net,Stored Procedures,Cursor,Temp Tables,表1:机场 Id airportname 1 NYK(newyork) 2 DXB (dubai) 3 BOM (Bombay) 4 DEL (delhi) 现在我的死记硬背的细节 First Last Detail Route 1 : Nyk - BOM : Nyk - DXB - BOM 2 : Nyk - Del : Nyk - DXB - BOM -Del 表2:分段详细信息 SegmentdetailsId RouteId O

表1:机场

Id airportname 
1  NYK(newyork)
2  DXB (dubai)
3  BOM (Bombay) 
4  DEL (delhi)
现在我的死记硬背的细节

    First Last      Detail Route  
1 : Nyk - BOM : Nyk - DXB - BOM    
2 : Nyk - Del : Nyk - DXB - BOM -Del
表2:分段详细信息

SegmentdetailsId    RouteId     Originairport     destibation airport  
1                     1          1                   2
2                     1          2                   3 
3                     1          3                   4
4                     2          1                   2
5                     2          2                   3
注意:用户可以在路线上进行任何分段旅行,例如Nyk到DXB(1-2)、Nyk-Bom(1-3)、Nyk-Del(1-4)或DXB-Bom(2-4)等

现在我的问题是,当我将参数作为始发机场ID:1和目的地ID:4传入时,我的结果将如下存储过程中的表所示

    First Last      Detail Route  
1 : Nyk - BOM : Nyk - DXB - BOM    
2 : Nyk - Del : Nyk - DXB - BOM -Del
案例-1 诱人的:路线细节

SegmentdetailsId    RouteId    
1                     1  
2                     1  
3                     1      
SegmentdetailsId    RouteId    
1                     1  
2                     1  

4                     2      
5                     2      
SegmentdetailsId    RouteId    
1                     1  
2                     1  
3??                   1??
4                     2      
5                     2    

案例-2 我传入的参数为始发机场ID:1和目的地ID:3,所以我的结果如下表所示

Temptable: routewise_segmentdetails

    SegmentdetailsId    RouteId    
    2                     1  
    5                     2  
诱人的:路线细节

SegmentdetailsId    RouteId    
1                     1  
2                     1  
3                     1      
SegmentdetailsId    RouteId    
1                     1  
2                     1  

4                     2      
5                     2      
SegmentdetailsId    RouteId    
1                     1  
2                     1  
3??                   1??
4                     2      
5                     2    

案例-3 我传入的参数是始发机场ID:2和目的地ID:3,所以我的结果如下表所示

Temptable: routewise_segmentdetails

    SegmentdetailsId    RouteId    
    2                     1  
    5                     2  

可能我可以使用嵌套游标,然后获取值,但我不知道将游标嵌套在表中。

这将返回您的预期结果集…您可以尝试创建两个提供的表,并运行以下SQL,它将明确返回您的预期结果集:

select SegmentdetailsId,RouteId from segmentdetails
    where destinationairport<= "Your Number'
从SECTIONDETAILS中选择SECTIONDETAILSID、RouteId

目的地机场> P>这里是考虑所有可能性

的最终SQL。
select SegmentdetailsId   , RouteId
from segmentdetails
where ORIGINAIRPORT >= 2 and DESTIBATIONAIRPORT<= 3
选择SegmentdetailsId,RouteId
从细节

其中ORIGINAIRPORT>=2和DESTIBATIONAIRPORT视为表的结构-以及存储数据的方式意味着分段详细信息按顺序存储。有了这些信息,你根本不需要在临时表或类似的东西中存储任何东西

我认为这应该可以做到这一点——您只需编写两个子查询,每个子查询拉取一个不同的routeId并将其连接回原始表以及其他子查询,但也可以使用子查询中使用的相同参数约束外部查询:

select
    core.segmentDetailsId,
    core.routeId
from
    segmentDetails core
        join (
            select distinct
                routeId
            from
                segmentDetails
            where
                originAirport=param1    
        ) sub1
        on core.routeId=sub1.routeId
        join (
            select distinct
                routeId
            from
                segmentDetails
            where
                destinationAirport=param2       
        ) sub2
        on core.routeId=sub2.routeId
        and sub1.routeId=sub2.routeId
where
    core.originAirport>=param1
    and core.destinationAirport<=param2
order by
    segmentDetailsId,
    routeId

您将destination设置为3,但显示的是segdetid3,其原点为3,而destination为4。我想你的意思是不在结果中显示这一行

这将只返回目的地机场路线,但实际上我希望所有的部分详细信息与起源和目的地也。线对为1-2,2-3,3-4,因此段详细信息id为1,2,3,路线为1thx,但如果我的原始id=1,destinationid=4,那么它会工作吗?因为我测试的记录只针对
段ID routeid起始目的地
1 1 2 2 1 2 3 3 3 4
段:1-2,3-4,但仍然是2-3(剩余部分)记录缺失您想要哪种输出?1或2?然后我将根据您的要求提供ans。@dipali我想创建动态查询n根据起点和终点让我们尝试使用1,但请记住不要将所有数据作为数字进行比较,如IDWhat is your requirement@Imran?使用
be可以轻松检索上述输出两个条件之间。但是,我认为你的问题更复杂。你为什么要创建动态查询和嵌套游标?@winky yes同意上面的说法,put只能在case-2和case-3中检索或查询,但是case-1呢让我们看看我的路线是1-2-3-4(机场id)现在我可以乘坐1-4或2-3或1-3的旅程。我的其他票价和时间细节基于分段详细信息。现在您的问题已经解决了…好的,我正在尝试非常好的解决方案。对于您的查询,分段详细信息Id 3和路线Id 1不会出现