Reputation: 172
I have 3 tables
Users (id, name, email)
Teams (id, name)
TeamUsers (id, team_id, user_id)
How do I find all the users
who are not in team_id = 1?
Upvotes: 0
Views: 46
Reputation: 66169
There are many ways. Here's one:
$model = ClassRegistry::init('User');
$query = 'SELECT * FROM team_users where user_id = User.id AND team_id = 1';
$users = $model->find('all', array(
'conditions' => array(
"NOT EXISTS ($query)"
)
));
Which will result in:
SELECT
*
FROM
users as User
WHERE
NOT EXISTS (
SELECT * FROM team_users WHERE user_id = User.id AND team_id = 1
)
Upvotes: 3