我有三个表:users
、contacts
和groups
。我想找到一个用户的所有联系人,然后从那些选定的联系人中,我想排除那些group_id
在groups
表中找到特定的用户的联系人。
我的groups
表结构如下:
id (primary key)
group_id (a foreign key to a table contain general group info)
user_id (a foreign key to the users table)
我的contacts
表结构如下:
id (primary key)
user_id (a foreign key to the `users` table of the user who added the contact)
contact_id (a foreign key to the `users` table of the added contact)
我当前不工作的查询是这样的:
"""SELECT c.*, u.*
FROM contacts c
LEFT JOIN groups g ON c.contact_id = g.user_id
INNER JOIN users u on u.id = c.contact_id
WHERE c.user_id = %s AND
<not sure what further constraints to place on query>""", (user_id, group_id)
根据我的理解,LEFT JOIN
当然是不正确的,鉴于它不正确,我还没有在WHERE
子句中添加任何更多的约束。
实现这一目标的最佳方法是什么?谢谢你。