我有“OcjeneKorisnika”表,其中包含Korisnik_ID
,Artikl_ID
和Ocjena_ID
字段。
在表格中,我有条目Korisnik_ID 12
订阅文章Arikl_ID 9
和Artikl_ID 13
以及Ocjena_ID
中的一些值。
下面的查询会检索除Korisnik_ID
以外的所有Artikle_ID
,Ocjena_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_ID
为Artikl_ID
9和Artikl_ID
13 Korisnik_ID
1,Korisnik_ID
2,... 。只有Artikl_ID
9的值,而不是Artikl_ID
13(表中)
如何显示所有Korisnik_ID
Ocjena_ID
中Artikle_ID
的值Korisnik_IDs
(9和13)以及排除Artikl_ID
的{{1}}只有一个{{1}的值(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
答案 0 :(得分: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
如果那不是您正在寻找的内容,那么您应该编辑问题并尝试澄清您想要的内容。