2013-01-09 39 views
0

我有包含Korisnik_ID,Artikl_IDOcjena_ID字段的表「OcjeneKorisnika」。 在表中我有條目Korisnik_ID 12其中訂購文章Arikl_ID 9Artikl_ID 13Ocjena_ID其中的一些值。下面刪除不滿足所有要求的項目

查詢檢索所有Korisnik_IDArtikle_IDOcjena_ID除了Korisnik_ID 12

SELECT Korisnik_ID, 
     Artikl_ID, 
     Ocjena_ID 
FROM OcjeneKorisnika 
WHERE (Artikl_ID IN 
     (SELECT Artikl_ID 
      FROM Kupac_Narudzba 
      WHERE (Korisnik_ID = 12))) EXCEPT 
    SELECT Korisnik_ID, 
     Artikl_ID, 
     Ocjena_ID 
    FROM OcjeneKorisnika WHERE Korisnik_ID = 12 
ORDER BY Korisnik_ID 

例如korisnik_ID 11具有在Ocjena_IDArtikl_ID 9和13 Artikl_IDKorisnik_ID 1,Korisnik_ID 2,...具有值只對Artikl_ID 9,不是Artikl_ID 13(表中)

如何顯示全部Korisnik_ID其中Artikle_ID(9和13)的值爲Ocjena_ID,排除Korisnik_IDs的值只有一個Artikl_ID(9或13)的值?

示例源數據:

Korisnik_ID | Artikl_ID | Ocjena_ID 
1 | 9 | 3 
2 | 9 | 4 
2 | 13 | 5 
9 | 9 | 2 
10 | 9 | 3 
10 | 13 | 4 
10 | 15 | 2 
12 | 9 | 3 
12 | 13 | 2 

我需要有輸出:

Korisnik_ID | Artikl_ID | Ocjena_ID 
2 | 9 | 4 
2 | 13 | 5 
10 | 9 | 3 
10 | 13 | 4 
+1

足夠小心以更新您的問題與一些示例數據和預期的重試嗎? – bonCodigo

+0

在表格中我有: Korisnik_ID | Artikl_ID | Ocjena_ID 1 | 9 | 3 2 | 9 | 4 2 | 13 | 5 9 | 9 | 2 10 | 9 | 3 10 | 13 | 4 10 | 15 | 2 12 | 9 | 3 12 | 13 | 2 我需要輸出: Korisnik_ID | Artikl_ID | Ocjena_ID 2 | 9 | 4 2 | 13 | 5 10 | 9 | 3 10 | 13 | 4 Tnx提前。 – user1952467

+0

對不起,我有上面格式化評論的問題!? – user1952467

回答

0

您的問題描述並不完全似乎與樣本數據(從您的評論)

此查詢將返回對於Artikl_ID至少同時具有9和13的行(但可能更像Korisnik_ID 10誰也有Artikl_ID 15)。

with matches as (
    select Korisnik_ID from OcjeneKorisnika where Artikl_ID in (9,13) 
    group by Korisnik_ID having count(distinct Artikl_ID) = 2 
) 

select o.* from OcjeneKorisnika o 
join matches m on o.Korisnik_ID = m.Korisnik_ID 
where o.Artikl_ID in (9,13) 

鑑於您的樣本數據的結果將是:

Korisnik_ID Artikl_ID Ocjena_ID 
----------- ----------- ----------- 
2   9   4 
2   13   5 
10   9   3 
10   13   4 
12   9   3 
12   13   2 

如果這是不是你要找什麼,那麼你應該編輯的問題,並試圖澄清你想要什麼。

+0

哦,我沒有注意到這個問題在兩年前被問過......猜測OP早已不在了。 – jpw