0

我使用 SQL 2008 R2

我有一张桌子 ORDER

ORDER_ID LABEL QUAINTITY IS_CLOSED
1        oooo  5         true  
2        pppp  6         true
3        oooo  5         true
4        iiii  9         false

表命令

COMMAND_ID THE_ODER 
1          1_3
2          2

我想要的是

ORDER_ID LABEL QUAINTITY THE_ODER
1        oooo  5          1_3 
2        pppp  6          2  
3        oooo  5          1_3 
4        iiii  9         

我怎样才能把这两张桌子联合起来?

有点像 COMMAND.THE_ORDER 中的 ODER.ORDER_ID

我知道这不是一个好的建筑和暴力规范。但我必须处理它。

4

3 回答 3

1

首先,order是一个不好的表名。它是一个 SQL 保留字。 orders会更好。

你可以用一个神秘的连接来做到这一点。基本上,order_id在列表中查找the_oder

select o.ORDER_ID, o.LABEL o.QUAINTITY, c.THE_ODER
from "order" o left outer join
     commande c
     on instr('_'||c.the_oder||'_', '_'||cast(o.order_id as varchar2(255))||'_') > 0

上面使用 Oracle 语法进行字符串连接和查找子字符串。不幸的是,你不能like轻易使用,因为'_'它是一个通配符like

编辑:

在 SQL Server 中,您将执行以下操作:

select o.ORDER_ID, o.LABEL o.QUAINTITY, c.THE_ODER
from "order" o left outer join
     commande c
     on charindex('_'+cast(o.order_id as varchar(255))+'_', '_'+c.the_oder+'_') > 0
于 2013-08-29T14:24:12.033 回答
0

在这个例子中,而不是有一组分隔的值来检查你应该简单地有一个链接表来存储值。它应该看起来像这样:

表命令

COMMAND_ID ODRER_ID 
1          1
1          3
2          2

从这里您可以加入此表以检索您需要的信息。

于 2013-08-29T14:18:53.987 回答
0

试试这个:

select order_id,label,quantity
from orders
left join
select * from command
on orders.orderID=command.commandid
于 2013-08-29T14:21:36.507 回答