2012-02-20 87 views
-1

的间隔名单我有两个表MSSQL - HOWTO摆脱标识

Created_Labels

enter image description here

  • IFlabel_ID_from = label_ID_to(这意味着它已经只有一个标签创建),列label_number是创建标签的编号。

  • IF(创建多个标签)label_ID_from <> label_ID_to,在柱label_numberNULL并在接下来的两列是创建与ID从表波纹管标签的间隔。

标签(现有的标贴的列表):

enter image description here

我怎样才能获得的完整列表,创建label_numbers(取得编号为105,110,111,112 ..标签120,200,201,202 ... 210,394,554)?

enter image description here

+0

从你的例子标签100001只出现在两个表中的id在= 105,所以应该有足够的只是选择整个标签表...还是我不明白的问题 – mslliviu 2012-02-20 08:27:33

+0

,我需要选择标识105,110 ,111..120,200,201,202..210,394,554, – gaffcz 2012-02-20 08:32:11

回答

1
SELECT 
     L.ID 
    , L.label_number 
FROM 
     Labels L 
    JOIN 
     Created_Labels CL 
    ON 
     L.ID BETWEEN CL.label_ID_from 
       AND CL.label_ID_to 
+0

非常感谢你,那正是我需要的! – gaffcz 2012-02-20 08:54:09

0

你试过这个吗?

SELECT distinct label_number 
FROM created_labeles c; 

OR

SELEC distinct l.label_number 
FROM created_labeles c, 
     labels l 
WHERE c.label_number = l.label_numbers(+) 
    AND c.label_number is null 

上述第二查询是左外连接在Oracle SQL当量。