There is most likely a simple solution to this question, but I've found myself stuck and can't find another question similar to this that's been posted. So, I have a table (SUPPLIERS
) that identifies stores and their suppliers.
StoreID | SupplierID |
---|---|
123456 | 001 |
123456 | 002 |
123456 | 003 |
234567 | 001 |
345678 | 001 |
345678 | 002 |
456789 | 001 |
456789 | 004 |
I need to identify the stores where a specified supplier was used in combination with a specified group of suppliers. So from the above SUPPLIERS
table, I need to obtain all Store IDs where supplier 001
was used with 002
AND/OR 003
.
I've tried...
SELECT
DISTINCT StoreID
FROM
SUPPLIERS
WHERE
SupplierID = 001
AND (SupplierID = 002
or
SupplierID = 003);
...but I'm not returning what I'd expect. From the above I would expect:
StoreID |
---|
123456 |
345678 |
Thanks in advance for your time.
CodePudding user response:
Here's one option:
SQL> select distinct a.storeid
2 from suppliers a
3 where a.supplierid = '001'
4 and exists (select null
5 from suppliers b
6 where b.storeid = a.storeid
7 and b.supplierid in ('002', '003')
8 );
STOREID
----------
123456
345678
SQL>