T Sql:你能帮我写一下SQL查询吗?

时间:2011-01-27 11:36:34

标签: sql tsql

假设我们在Sql server中有一个名为table1的表,其中包含以下结构和数据:

TableName:Parts

PartCode   PartName
-------------------
10         Dashboard
11         Mirror
12         Seat
13         Cord

TableName:CarParts

CarCode    PartCode
--------------------
01          10
01          11
01          12
02          11
02          12
03          10
03          11
03          13

如何获得包含 ALL PartCodes的CarCode,我在数据结构中列出了类似winform(C#)中的datagridview?我应该说我在Sql server中编写了一个UDF,它接受1个参数(CarCode)并返回与之相关的所有PartCodes的CSV。

编辑: 例如,我的PartCode列表有2个PartCodes:10,12 查询应该返回包含10和12的CarCode,并且它只是CarCode“01”而不是其他。 我希望这能澄清我的意思。

2 个答案:

答案 0 :(得分:1)

您可以比较

的计数
  • 搜索代码数量
  • 找到的代码数量

如果匹配,则拥有正确的CarCode

这假设一个输入表

SELECT
    CP.CarCode
FROM
    CarParts CP
    JOIN
    @MyParts mp ON CP.PartCode = mp.PartCode
GROUP BY
    CP.CarCode
HAVING
    COUNT(CP.*) = COUNT(DISTINCT mp.PartCode)

这假设是值得的值

SELECT
    CP.CarCode
FROM
    CarParts CP
WHERE
    CP.PartCode IN (10, 12)
GROUP BY
    CP.CarCode
HAVING
    COUNT(CP.*) = 2 --numbr of IN conditions

您应该可以将CSV内容用于这些

答案 1 :(得分:0)

SELECT cp.CarCode
  FROM CarParts cp

EXCEPT

SELECT cp.CarCode
  FROM CarCode cp
    LEFT JOIN @MyParts mp ON cp.PartCode = mp.PartCode
  WHERE mp.PartCode IS NULL