Loops PL/SQL在迭代中连接表

Loops PL/SQL在迭代中连接表,loops,join,plsql,iteration,Loops,Join,Plsql,Iteration,在过去的一周里,我只是在自学PL/SQL过程,遇到了一些关于理解循环/游标如何与连接组合使用的初学者问题 任何有人能透露的信息都是非常好的,因为我对关于游标的PL/SQL的一些概念还很陌生 为这个非常模糊的例子提前道歉 在下面的示例中,我基本上是从表A开始,尝试获取客户的名称,然后设置一个原因代码标志:A)检查表B上的连接成功,如果连接失败,则检查客户是否在区域B(使用表C)。在下面的假设示例中,我还尝试创建一个输出,其中包含来自另一个表(客户名称)的数据 我尝试使用与下面类似的方法进行连接:

在过去的一周里,我只是在自学PL/SQL过程,遇到了一些关于理解循环/游标如何与连接组合使用的初学者问题

任何有人能透露的信息都是非常好的,因为我对关于游标的PL/SQL的一些概念还很陌生

为这个非常模糊的例子提前道歉

在下面的示例中,我基本上是从表A开始,尝试获取客户的名称,然后设置一个原因代码标志:A)检查表B上的连接成功,如果连接失败,则检查客户是否在区域B(使用表C)。在下面的假设示例中,我还尝试创建一个输出,其中包含来自另一个表(客户名称)的数据

我尝试使用与下面类似的方法进行连接:

申报

顺序整数

游标base1是 选择客户id、订阅、原因代码 来自customersubscription

开始

对于base1循环中的base_rec

选择计数(*)

使井然有序

从customersubscription库中,选择customerorder订单

其中base.customer\u id=order.customer\u id

如果订单>1,则

更新customersubscription集reasoncode='已订购产品'

式中,基准_rec的电流

否则

端环

结束

如您所见,我试图为基表打开一个游标,并遍历每个记录,连接到其他表以设置标志。这不起作用,我假设这是我尝试加入的方式,因为它没有指定当前行。我也找不到任何以我试图获得客户名称的方式加入数据检索的例子

表A:客户订阅

Customer_ID | SubscriptionID | reasoncode
123         | 567            |
124         |                |
表B:客户订单

Customer_ID | Order_ID | Product
123         | 567      | TITANIC
表C:客户

Customer_ID | Name    | Area     
123         | Roger   | E     
124         | Timothy | B     
产出:表A

Customer_ID | Name    | ReasonCode     
123         | Roger   | Has ordered Product    
124         | Timothy | Outside of area     
试试这个

Select c.Customer_ID 
    ,c.Name
    ,Case When co.Order_id is not null 
            Then 'Has ordered Product'
          When Area ='B'
            Then 'Outside of area'
          Else 'UnKnown'
     End as ReasonCode
 from Customer as c
left join CustomerOrder as co on c.Customer_ID =co.Customer_ID 
如果每个客户的CustomerOrder表中有多个条目,则需要更改查询,如下所示:

Select c.Customer_ID 
    ,c.Name
    ,Case When exists(Select COUNT(co.Order_ID) from CustomerOrder as co where c.Customer_ID =co.Customer_ID) 
         Then 'Has ordered Product'
          When Area ='B'
            Then 'Outside of area'
          Else 'UnKnown'
     End as ReasonCode
 from Customer as c

感谢您的帮助,但我实际上特别希望使用迭代来解决这个问题,并使用results@user3484575,如果是迭代,则尝试使用while循环。谢谢,您能否提供一个示例,说明如何实际为循环中的每个记录进行连接?。从根本上讲,我很难理解如何在语法上使每个记录连接到另一个表以检索/检查值的存在。非常感谢您能提供的任何信息当然,请给我一些时间,在上面的示例中,这是reason_代码,但我只是为了说明目的而将该示例放在那里。我只是想学习关于显式游标和迭代的概念。非常感谢,我真的很感激!