2013-02-16 70 views
-4

我有這個表:一個複雜的SQL SELECT基於多行

ID ITEM_ID屬性數量

1   1    a     2 
2   1    b     3 
3   1    c     4 
4   2    a     3 
5   2    b     3 
6   3    a     2 
7   3    b     1 

我想要得到所有不同ITEM_ID的有一個屬​​性「是」以量超過1,並在同一時間屬性「b」與數量大於2

如果我把

select item_id 
from table_name 
where (attribute = a and quantity > 1) and (attribute = b and quantity >2) 

我得不到結果...

我該如何做到這一點?請有人幫忙快點這是我下週要發表的論文。

+0

lol ^^你有貝寶嗎? – Sebas 2013-02-16 18:50:02

+1

StackOverflow不是這個問題的適當位置。我們不會爲您編寫代碼。你需要做自己的編碼,如果你不確定爲什麼某些東西不能按預期工作,請在代碼中加上一個解釋你期望它做什麼,以及它實際上在做什麼,包括所有的錯誤信息。參見[關於StackOverflow](http://stackoverflow.com/about)。 – 2013-02-16 18:51:42

+0

@john conde - 我寫了我的代碼,我確實說它不工作,並且正在尋求建議。 – TosheX 2013-02-16 18:58:34

回答

0

試試這個

select item_id 
    from Table1 
    where (attribute = 'a' and quantity > 1) or (attribute = 'b' and quantity >2) 
    group by item_id 

SQL DEMO HERE

+1

擁有和?也許你想編輯這個。 – 2013-02-16 18:55:06

+0

正如我對其他人建議的OR條款,它不會工作。如果你看到我在這個問題上做的編輯,我設法找到一個解決方案的類似問題。謝謝你的答案! – TosheX 2013-02-16 19:01:57

+0

你試過我的查詢嗎?它會給出不同的user_id,就像它在演示中顯示的那樣,或者你想要的是什麼?讓我知道 – 2013-02-16 19:16:38

1

更改您的where子句:

WHERE (attribute = a and quantity > 1) OR (attribute = b and quantity >2) 

而且你的選擇:

SELECT DISTINCT item_id 
+0

對不起,這隻會根據任何時候是否滿足任何條件而返回所有結果。我希望兩個條件都適用。 – TosheX 2013-02-16 18:59:13

+0

@TosheX編輯回覆。 – hjpotter92 2013-02-16 19:01:12

0

編輯:解決了! 經過一個小時的搜索後,我發現了這個問題,其基本上與我的一樣,並有一個可行的答案(第一個)。

SQL - Select Query for complex dynamic rows

基本上傢伙做了什麼是加盟表本身作爲根據需要多次添加下一個狀態爲隨後的條件加入表名稱不同。

+0

這隻會降低查詢的性能。也許你想告訴我們結果查詢和/或你想要的結果集? – hjpotter92 2013-02-16 19:05:10

+0

正如在我提供的鏈接中說的那樣,可以說屬性是產品,數量是它賣出的數量,而物品ID是一個日期參數。我想知道某些商品銷售超過特定次數的日子列表。我希望這更清晰? – TosheX 2013-02-16 19:10:45