Я хочу отобразить все объекты, которые имеют все значения, которые я помещаю в WHERE IN, поэтому я сделал это, используя HAVING COUNT (*) = 5;
SELECT d.semundjeName
FROM rel r JOIN
semundjet d
ON r.semundjeID = d.semundjeID
WHERE r.simptomaID IN (1, 2, 3, 4, 5)
GROUP BY d.semundjeName
HAVING COUNT(*) = 5;
, и это работаетхорошо, но я хочу сделать то же самое, но с именами, а не идентификаторами, поэтому я сделал
select semundjeName
from simptomat
left join rel
on rel.semundjeID = semundjet.semundjeID
left join semundjet
on semundjet.semundjeID = rel.semundjeID
where simptomaName IN ('Merzi','Dhimbje Koke','Gjakederdhje','Dhimbje
Fyti','Dhimbje Kycesh')
group by semundjeName
HAVING COUNT(*) = 5;
, и это не похоже на работу.Могу ли я сделать то же самое, не используя HAVING COUNT (*) вообще?Это означает, что нужно отображать только те объекты, которые содержат все значения внутри WHERE IN.
#semundjet - holds all disease names
######################################
semundjeID | semundjeName
-----------------------
1 Malarja
2 Epilepsi
3 Depresion
4 Tuberkuloz
5 Kancer
#simptomat - holds all symptoms
#################################
simptomaID | simptomaName
-------------------------
1 Merzi
2 Dhimbje Koke
3 Gjakederdhje
4 Dhimbje Fyti
5 Dhimbje Kycesh
#rel - holds relation between diseases and symptoms
######################################################
relID | semundjeID | simptomaID
-----------------------------
1 1 1
2 1 2
3 3 1
4 3 2
5 3 3
6 4 4
7 5 5
8 5 1
9 5 2
10 5 3
11 5 4
Ожидаемым выводом будет "Kancer", поскольку это единственная сущность, которая содержит все симптомы "simptomaID", и я могу получить этот вывод из первого запроса, но не из второго.
Было бы полезно, если бы был способ сделать это без использования Имеющего счет () = 5;вообще, но автоматически возвращать в качестве вывода сущность, которая содержит все значения в условии IN *