SELECT o.organization_id
FROM orderss AS o
WHERE
(SELECT COUNT(*)
FROM orderss AS o1
WHERE o1.organization_id=o.organization_id AND (o1.item_id=101 OR o1.item_id=304)
)=2
Ovo je pod pretpostavkom da je par organization_id+item_id markiran kao UNIQUE odnosno ne može se ponavljati. Ako se može ponavljati onda bi trebala dva podupita.
Savjet: podupiti su spori i treba ih izbjegaviti gdje god je moguće.
[quote=vedran]SELECT o.organization_id
FROM orderss AS o
WHERE
(SELECT COUNT(*)
FROM orderss AS o1
WHERE o1.organization_id=o.organization_id AND (o1.item_id=101 OR o1.item_id=304)
)=2
Ovo je pod pretpostavkom da je par organization_id+item_id markiran kao UNIQUE odnosno ne može se ponavljati. Ako se može ponavljati onda bi trebala dva podupita.
Savjet: podupiti su spori i treba ih izbjegaviti gdje god je moguće.[/quote]
par organization_id i item_id nisu unique
ovo mi daje korektan rezultat ali moram jos testirati
select r.organization_id
from
(
select distinct o.organization_id, o.item_id
from orders o
where o.instance_id=12 and o.item_id in (101, 304)
order by o.organization_id asc
) r
group by organization_id
having count(*) >= 2
SELECT t1.org_id FROM tbl AS t1
INNER JOIN tbl AS t2
ON t1.org_id = t2.org_id
AND t1.item=101
AND t2.item=304;
Ovi AS nisu obavezni, tako da mozes pisati organisations t1 ili kako se vec zove ti primarna tabela.
SELECT t1.org_id FROM tbl AS t1
INNER JOIN tbl AS t2
ON t1.org_id = t2.org_id
AND t1.item=101
AND t2.item=304;
Ovi AS nisu obavezni, tako da mozes pisati organisations t1 ili kako se vec zove ti primarna tabela.[/quote]
posto org_id i item_id kao par se mogu biti vise od jedanput (nisu unique) moram koristiti distinct funkciju. to je razlog zasto imam sub-query.
@afan: Jesi li probao opalit ovaj moj query? Ja sam ga testirao sa ovim podacima koje si ti dao i vraca TACNO ono sto tebi treba i to bez koristenja DISTINCT (ergo, nema temporary tabele ergo radi brze)…