SQL Server 2005查找用户

时间:2012-03-21 02:30:07

标签: sql-server sql-server-2005

  

可能重复:
  SQL Server 2005 How to Find the user who has all books

我对sql查询有疑问。

我正在尝试查询具有所有计算机书籍的用户。 例如, 我有两张桌子,

1)项目表

|itemid |item_name          |

|1      | computerbook1     |

|2      | computerbook2     |

|3      | computerbook3     |

|4      | mathbook1         |

|5      | mathbook2         |

|6      | physicsbook       | 

2)userinventory table

|used_id | name_item        |

|1       | computerbook1    |

|1       | computerbook2    |

|1       | computerbook3    |

|2       | computerbook1    |

|2       | mathbook1        |

|2       | physicsbook      |

|3       | computerbook1    |

|3       | computerbook3    |

由于用户“1”拥有所有计算机书籍,我想进行返回用户1的查询。

我做的是......

Create Table #tmp (
    Classname [varchar](50) NOT NULL
)

INSERT INTO #tmp
SELECT DISTINCT item_name  
FROM ITEM
WHERE item_name  like 'computerbook%'

我想比较找到拥有所有项目的用户..

但是,我不确定该怎么做..因为我不能使用计数或任何侵略

请勿使用“count”

无论如何都知道他们找到拥有所有电脑书的用户ID吗?

1 个答案:

答案 0 :(得分:0)

这是一个查询,只会让您拥有计算机类别中所有项目的用户(假设item.itemname是唯一的)。

SELECT USER_ID
FROM userinventory u
INNER JOIN item i ON u.name_item=i.item_name
    AND u.name_item LIKE 'computer%'
GROUP BY USER_ID
HAVING COUNT(item_name) = (
    SELECT COUNT(item_name)
    FROM item
    WHERE item_name LIKE 'computer%'
)

您可以明显调整它以适合您想要的任何项目类别。

您是否尝试为item表格中的每个类别执行此操作?如果是这样,那将会涉及更多,但是可能。