2012-03-21 83 views
0

可能重複:
SQL Server 2005 How to Find the user who has all booksSQL Server 2005中查找用戶

我有一個SQL查詢的問題。

我正在嘗試查詢擁有所有計算機的用戶。 例如, 我有兩個表,

1)項目表

|itemid |item_name   | 

|1  | computerbook1  | 

|2  | computerbook2  | 

|3  | computerbook3  | 

|4  | mathbook1   | 

|5  | mathbook2   | 

|6  | physicsbook  | 

2)userinventory表

|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%' 

我想比較找到用戶誰擁有所有項目的..

不過,我真的不知道該怎麼辦呢..因爲我不能用計數或任何侵略

不要使用「計數」

無論如何知道他們的方式來找到用戶ID誰擁有所有的電腦本?

+0

投票關閉:後來OP問完全相同的問題,後來的版本吸引了更多的答案http://stackoverflow.com/questions/9798710/sql-server-2005-how-to-find-the -user-who-have-books – Pondlife 2012-03-21 08:39:47

回答

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表中的每個類別執行此操作?如果是這樣,那會多一點參與,但是可能的。

+0

感謝您的回答,但我無法使用COUNT。你知道我如何在沒有* COUNT *的情況下進行查詢嗎? – 2012-03-21 03:30:55

+0

對不起,我誤解了,並認爲你使用count時有問題。並不是說你不能使用計數。爲什麼你不能使用計數? – squillman 2012-03-21 03:32:00

+0

這是系統要求。 – 2012-03-21 03:34:56