2011-02-16 278 views
1

hiya我有一个大量的工作,试图对成千上万的记录进行排序,一切都会好起来的,但我有一个业务表和用户表,现在所有的用户都需要有业务ID应用。我已经做到了这一点:帮助sql查询查询

select b.id as businessid, u.id as userid 
from business b, [trade_tools].[dbo].[user] u 
where pcode = u.pword AND u.parent_id is null AND u.usertype_id = 5 AND u.display = 1 AND b.display = 1 

这个伟大的工程,但我想换这里面说:

update [trade_tools].[dbo].[user] 
set parent_id = (select businessid FROM (select b.id as businessid, u.id as userid 
from business b, [trade_tools].[dbo].[user] u 
where pcode = u.pword AND u.parent_id is null AND u.usertype_id = 5 AND u.display = 1 AND b.display = 1) where userid =  currentIDWeoOnNow) 

现在我知道这是可能我只是不工作正确的方式,可以在任何SQL Pro只是在这里借了一把手,这样我就可以获得这些数据。

我曾尝试使用内部选择运行更新,但是这并不起作用,因为当您只允许一个时,innrer select创建超过2个结果,因此沿着这条路线尝试解决该问题。

感谢p.s服务器是MSSQL服务器,我使用SQL Server Management Studio来运行我的查询。

+1

您能否给我们表的定义,并说一个关于usertype_id和显示?我有一种感觉,至少展示是多余的。 – 2011-02-16 10:54:38

+0

usertype_id是在一个单独的表中的业务,管理,区域经理等,显示器将场地设置为活动或不活动这些效果都不是我正在尝试做的,我只是将我的结果限制到特定用户和企业 – davethecoder 2011-02-16 11:02:59

回答

1
  1. 你必须从企业用户一个一对多的关系(即每个企业都有许多用户,但每个用户只属于一个业务)
  2. 你使用user.pword和business.pcode加入用户将他们的业务

在这种情况下,这样做只是这可能工作:

update [trade_tools].[dbo].[user] 
set parent_id = businessid 
from business b, [trade_tools].[dbo].[user] u 
where pcode = u.pword AND u.parent_id is null AND u.usertype_id = 5 AND u.display = 1 AND b.display = 1 
0

试试这个:

update [trade_tools].[dbo].[user] 
set parent_id = b.id 

from 
business b, [trade_tools].[dbo].[user] u 
where pcode = u.pword 
AND u.parent_id is null 
AND u.usertype_id = 5 
AND u.display = 1 
AND b.display = 1 

where userid =currentIDWeoOnNow 
+0

有效WHERE – davethecoder 2011-02-16 11:10:26

+0

此外,正确的语法与否,尝试使用任何代码的代码块。 – anothershrubery 2011-02-16 11:18:39

1

我想这可能工作这段时间::

更新[trade_tools] [DBO]。[用户]设置PARENT_ID = b.id

从业务B,[trade_tools]。[DBO ]。[user] u where pcode = u.pword AND u.parent_id is null AND u.usertype_id = 5 AND u.display = 1 AND b.display = 1 and u.userid = currentIDWeoOnNow