I have the next table:
+---------+------------+
| firm_id | service_id |
+---------+------------+
| 6 | 2 |
| 6 | 4 |
| 23 | 7 |
| 23 | 6 |
I want to get ONLY companies who do not have service_id=4 in their service list.
A query of the above table should return only the company with firm_id=23 because firm_id=6 has one record with service_id=4.
I want to make it with one query. Is this possible (without joins)?
Thanks.
P.S. Thanks everyone. User “derobert” suggested very interesting way, what i was looking for.
You can do it several ways. Here is one, with a correlated subquery:
In MySQL-land it is often better to rewrite as a self-join:
Finally, here is one way to do it that doesn’t involve subqueries or joins (but I expect performs worse than either of the above)
I confess I haven’t actually run these; please forgive typos.