可能重复:
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吗?
答案 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
表格中的每个类别执行此操作?如果是这样,那将会涉及更多,但是可能。