问题是这样的:
表1:Items
itemid  itemName
1       名称1
2       名称2
3       名称3
表2:Result
resultid  answer
1        1,3
2        3
3        2,3
4        1,2
两个表之间的关系是:Result表中的answer字段存储的是Items表中itemid字段以“,”为分隔符的id集合,现在想要的结果是:
itemid itemName num
1      名称1     2
2      名称2     1
3      名称3     3
也就是说:items表中的各行的id在Result表中出现的次数。
比如:itemid为1的在Result表的answer字段中出现了2次,num为2,itemid为3的行在Result表的answer字段中出现了3次,num为3...
请大家帮忙。

解决方案 »

  1.   

    可能说的有点儿不明白:
    这个num字段是求出来的,如果itemid为1的在Result表的answer字段中出现了2次,那么num为2,如果itemid为3的行在Result表的answer字段中出现了3次,那么num为3... 
    我所需要的就是这个求出来的num,希望大家帮帮忙。谢谢了。
      

  2.   

    select 
    itemid,  
    itemName ,
    num =(select count(1) my_count from Result where charindex(','+answer + ',',itemid) > 0 )
    from Items 
      

  3.   

    这个~
    select 
    itemid,  
    itemName ,
    num =(select count(1) my_count from Result where charindex(','+answer + ',',','+itemid+ ',') > 0 )
    from Items 
      

  4.   

    if object_id('Items')iS not null drop table  Items
    go
    create table Items(itemid int,  itemName nvarchar(10)) 
    insert Items select 1,      N'名称1' 
    insert Items select 2,      N'名称2' 
    insert Items select 3,      N'名称3' 
    if object_id('Result ')iS not null drop table  Result 
    go
    CREATE TABLE Result (resultid INT,  answer VARCHAR(10)) 
    INSERT Result  SELECT 1  ,      '1,3' 
    INSERT Result  SELECT 2 ,       '3' 
    INSERT Result  SELECT 3,        '2,3' 
    INSERT Result  SELECT 4,        '1,2' 
    SELECT I.itemid, I.itemName,(SELECT COUNT(*) FROM Result   R WHERE CHARINDEX(','+RTRIM(I.ITEMID)+',',','+R.answer+',')>0) FROM ITEMS I
    /*itemid      itemName               
    ----------- ---------- ----------- 
    1           名称1        2
    2           名称2        2
    3           名称3        3*/
      

  5.   

    老高你的语句提示:
    对数据类型而言运算符无效。运算符为 add,类型为 text。
    水族杰论,你的语句都看不完啊?
    就是那条语句 FROM ITEMS I...I后面是什么啊?能不能把语句换个行?谢谢了。
    是不是浏览器有问题啊?           
      

  6.   

    可是也提示和老高一样的错误啊?
    对数据类型而言运算符无效。运算符为 add,类型为 text。
    怎么回事儿?
      

  7.   

    --text-》varchar
    select 
        itemid,  
        itemName ,
        num =(select count(1) my_count from Result where charindex(','+cast(answer as varchar(8000)) + ',',','+itemid+ ',') > 0 )
    from Items 
      

  8.   

    charindex("所查找的字符串","被查找的字符串")
      

  9.   

    --如果TEXT類型不超過8000 轉換下 cast()
    if object_id('Items')iS not null drop table  Items
    go
    create table Items(itemid int,  itemName ntext) 
    insert Items select 1,      N'名称1' 
    insert Items select 2,      N'名称2' 
    insert Items select 3,      N'名称3' 
    if object_id('Result ')iS not null drop table  Result 
    go
    CREATE TABLE Result (resultid INT,  answer ntext) 
    INSERT Result  SELECT 1  ,      '1,3' 
    INSERT Result  SELECT 2 ,       '3' 
    INSERT Result  SELECT 3,        '2,3' 
    INSERT Result  SELECT 4,        '1,2' 
    SELECT I.itemid, I.itemName,(SELECT COUNT(*) FROM Result   R WHERE CHARINDEX(','+RTRIM(I.ITEMID)+',',','+cast(R.answer as nvarchar(4000))+',')>0) FROM ITEMS I
    /*itemid      itemName                                                                                                                                                                                                             
    ----------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------- 
    1           名称1                                                                                                                                                                                                      2
    2           名称2                                                                                                                                                                                                      2
    3           名称3                                                                                                                                                                                                      3
    */
      

  10.   

    老高你的怎么提示:
    数据类型 int 对于函数 charindex 无效。允许的类型为: char/varchar、nchar/nvarchar 和 binary/varbinary。
    不过用水族杰论的倒是出来了。