【问题标题】:Creating categories SQL创建类别 SQL
【发布时间】:2021-02-02 17:34:09
【问题描述】:

我确信有一种简单的方法可以做到这一点,但我迷路了。我试过CaseIF 语句,但仍然没有。 我有两个表都包含描述性文本字段。我需要创建一个链接,上面写着,

IF I.desc='Door' then P.desc IN ('Door', 'Hinge','Wood Frame')
ELSE IF I.desc='Cabinet' then P.desc IN ('Door','Hinge','knob','drawer'). 

不完全是我的描述,但它是我需要链接的示例。唯一的I.desc 必须将多个重叠的P.desc 拉到其他唯一的I.desc1 中。

任何帮助将不胜感激!

【问题讨论】:

  • 请分享您尝试过的表格、样本数据、提取输出和查询的ddl。

标签: sql toad


【解决方案1】:

在我看来,您似乎需要 third 表,其中包含 pairs 有效组合。像这样的东西(Oracle-ish 代码;您没有指定使用哪个数据库,但是用一些数据填充这样的表很简单):

create table pairs (i_desc, p_desc) as
   select 'Door'   , 'Hinge'      from dual union all
   select 'Door'   , 'Wood Frame' from dual union all
   select 'Cabinet', 'Door'       from dual union all
   select 'Cabinet', 'Hinge'      from dual union all
   select 'Cabinet', 'Drawer'     from dual;

易于维护;如果出现新元素,您只需插入一个新行,例如

insert into pairs (i_desc, p_desc) values ('Cabinet', 'Knob');

您将使用的查询将这 3 个表连接为

select ...
from i_table i join pairs r   on i.desc = r.i_desc
               join p_table p on p.desc = r.p_desc
where ...              

【讨论】:

    猜你喜欢
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多