用SQL查询的麻烦

时间:2012-06-19 22:09:47

标签: sql debugging query-optimization aggregate-functions

我有一张供应商和产品表。我需要删除供应商,然后将所有产品及其数量添加到另一个供应商。例如

表供应商。我删除了供应商1

sup1 idsup1
sup2 idsup2
sup3 idsup3

表产品。(idpr - 外键)

idpr1 amount1 idsup1
idpr1 amount2 idsup3
idpr1 amount3 idsup2
idpr2 amount4 idsup2

我需要将所有供应商1的产品添加到供应商2,因此这个表格将是这样的

idpr1 amount2 idsup3
idpr1 amount3+amount1 idsup2 
idpr2 amount4 idsup2

但是怎么做呢?我不明白如何用相同的idpr来总结所有产品。我用idsup1为所有记录设置了idsup2。但还有另一种方式吗?

1 个答案:

答案 0 :(得分:0)

  

我不明白如何将所有产品与相同的idpr相加。

使用WHERE子句中的子查询以及SUM函数中的列名称,如下例所示:

SELECT 'site://tags/' + TargetTagName + '/synonyms|' + TargetTagName AS [VOTE4ME], Count(SourceTagName) AS [SYNONYMS]
FROM TagSynonyms TS
WHERE
ApprovalDate IS NULL
AND
(SELECT SUM(
 CASE V.VoteTypeId 
 WHEN 2 THEN 1 
 WHEN 3 THEN -1 
 END) 
 FROM TAGS T, PostTags Pt, Posts P, Votes V, VoteTypes Vt
 WHERE T.Id = Pt.TagId
 AND P.Id = V.PostId
 AND Pt.PostId = P.ParentId
 AND Vt.Id = V.VoteTypeId
 AND T.TagName = TargetTagName
 AND P.OwnerUserId = ##userid##
 AND P.CommunityOwnedDate IS NULL
) > 4
GROUP BY TargetTagName

<强>参考