【发布时间】:2016-09-28 21:34:59
【问题描述】:
我有三张桌子:
订阅
订阅 ID
订阅名称
继承(可以为 NULL)订阅选项
订阅选项ID
订阅 ID
选项ID
选项值选项
选项ID
选项默认值
说明
我需要传入一个包含多个选项和订阅 ID 的查询,大致如下:
SELECT optionid, optionvalue WHERE subscriptionid = x AND options IN (a, b, c, d, e, f)
只有我需要通过这样的递归调用来实现逻辑继承:
if subscriptionoption exists for subscription id & optionid
use subscriptionoption.optionvalue in the row
else
if inherits is not NULL
call this function using inherited subscription id
else
use options.optiondefaultvalue for that optionid
【问题讨论】:
-
我需要对“重复此过程”部分进行一些说明。你想重复什么?如果订阅选项记录不存在并且继承不为空,您究竟要完成什么?因为我看不到重复该过程的任何部分会产生不同的结果,并且只是一个无限循环(除非您的意思是不断重复检查,直到继承为空或找到订阅选项记录,这将是一个非常坏主意)。
-
对不起,希望澄清,只是意味着仅使用在继承中找到的订阅ID重复该过程
-
正确的sample code(此处为 SQL 语句)比任何即席模式和示例数据格式都更有用。样品请使用
CREATE TABLE和INSERT ... VALUES。所需的结果不需要以示例代码的形式呈现,因为结果是代码的输出,而不是代码本身。
标签: sql oracle hierarchical-data recursive-query