2011-04-21 207 views
3

好吧,可以說我有一個包含三列的表格。第一列是唯一的ID,第二列是用戶名,第三列是用戶擁有的項目。根據另一列中的不同值選擇重複值

我想要做的是從項目行中選擇兩個不同的用戶名擁有的值。我該怎麼做呢?所以對於假設的緣故讓我說我想看看鮑勃和魯斯所擁有的物品。

任何幫助將不勝感激。

有沒有一種方法可以發表表格來舉例說明我在說什麼?

+1

你是什麼意思第三列包含項目** s **?它是某種分隔列表嗎?如果是這樣,除非你規範化你的表格,否則這將是棘手的。 – 2011-04-21 22:37:56

+0

項目列是項目列表的外鍵嗎?對於相同的用戶名和項目,是否可以存在兩行? – Thomas 2011-04-21 22:43:58

+0

嘿傢伙,不,一個用戶可能擁有一件物品。兩行都是連接兩個表的外鍵。 – 2011-04-21 22:50:11

回答

2

依據是什麼,我認爲你的表結構是...

SELECT i.itemid, 
     i.description 
FROM items i 
     JOIN useritemrelationship r 
     ON i.itemid = r.itemid 
     JOIN users u 
     ON u.userid = r.userid 
WHERE u.name in ('Ruth', 'Bob') 
GROUP BY i.itemid 
HAVING COUNT(DISTINCT r.userid) = 2 
+0

嗨馬丁,你有什麼機會可以爲我解釋一下嗎? t1和t2是什麼意思? – 2011-04-21 22:55:23

+0

不,我沒有考慮到這些,因爲這是我聽說過的第一個!我是否假設像'username(userid,name)'和'items(itemid,description)'和'useritemrelationship(userid,itemid)' – 2011-04-21 23:01:07

+0

是的。對不起,我的壞描述能力:(你不知道你現在有多少幫助我,我目前正在努力獲得4個額外的聲望,我需要爲你提供幫助,大聲笑 – 2011-04-21 23:02:23

0

我可能會建議對至少三個領域的項目創建一個新表:ITEMID(如果該項目名稱不是唯一的) ,itemName和ownerID。然後在新表中查詢:

SELECT itemName FROM items WHERE ownerID='ruths id' OR ownerID='bobs ID' 

這也將有助於實現正常化通常是乾淨/舉辦禮儀建立數據庫時要執行。

+0

嗯,我如何設置它是我有一個表,描述項目,包括名稱,並將項目ID轉移到我上面描述的表中使用外鍵。我正在搜索的表格是針對另一個表格中某個項目的所有權的每個實例。因此,此表存在用於定義用戶表和項目表之間的關係。 – 2011-04-21 22:46:30

相關問題