Reputation: 3040
I have this query:
user = self.db.query("SELECT DISTINCT u.id, u.name, n.network_id, n.perm \
FROM users as u LEFT OUTER JOIN nets_permissions as n \
ON u.id = n.user_id WHERE u.id!=%s", int(usr_id))
The column 'perm' (permission) is an int value, that can be a value like 1, 2, 3, ecc. or a null value. I want a query like this:
user = self.db.query("SELECT DISTINCT u.id, u.name, n.network_id, n.perm \
FROM users as u LEFT OUTER JOIN nets_permissions as n \
ON u.id = n.user_id WHERE u.id!=%s" AND n.perm!=3, int(usr_id))
So, I want delete from the query the records with perm=3.
I thinked that I can retrieve the id of the user with perm=3 in this way:
self.lock_tables("read", ['nets_permissions'])
admin = self.db.query("SELECT user_id FROM nets_permissions \
WHERE network_id=%s AND perm=3", nid)
self.unlock_tables()
and then I could write
self.lock_tables("read", ['users as u', 'nets_permissions as n'])
user = self.db.query("SELECT DISTINCT u.id, u.name, n.network_id, n.perm \
FROM users as u LEFT OUTER JOIN nets_permissions as n \
ON u.id = n.user_id WHERE u.id!=%s AND u.id!=%s", int(usr_id), int(admin))
self.unlock_tables()
But this doesn't work....
Any idea?
Thank you
Upvotes: 0
Views: 586
Reputation: 51504
Try this
SELECT DISTINCT u.id, u.name, n.network_id, n.perm
FROM users as u
LEFT OUTER JOIN nets_permissions as n
ON u.id = n.user_id
AND n.perm<> 3
WHERE u.id!=%s
Upvotes: 2