1. sql 写不出来了 2. 如何将这个 sql 翻译成 sqlalchemy 语句...

2019-01-14 17:38:33 +08:00
 chaleaochexist

请教问题.

  1. 表 django_info.auth_user 有 id, name 和 age
  2. fd_group 有 id, fabric_name, role 其中 fabric_name + role 组成一个唯一约束
  3. fd_users_groups_m2m 关联表

现在想查询 不在 fabric_name = 'default' 中的所有 user

这么写没毛病吧? 还有其他方式吗?

SELECT *
FROM django_info.auth_user 
LEFT OUTER JOIN (
    fd_users_groups_m2m AS fd_users_groups_m2m_1 
    INNER JOIN fd_group AS fd_group_1 
    ON fd_group_1.id = fd_users_groups_m2m_1.fd_group_id
    where fd_group_1.fabric_name != 'default') 
ON django_info.auth_user.id = fd_users_groups_m2m_1.fd_user_id
1881 次点击
所在节点    Python
4 条回复
chaleaochexist
2019-01-14 18:26:20 +08:00
```
SELECT "posts_user"."id", "posts_user"."name"
FROM "posts_user"
WHERE NOT (
"posts_user"."id" IN (
SELECT U1."user_id" AS Col1
FROM "posts_user_group" U1
INNER JOIN "posts_group" U2
ON (U1."group_id" = U2."id")
WHERE U2."title" = 1)
)
```
chaleaochexist
2019-01-14 18:26:35 +08:00
但是如何翻译成 sqlalchemy...
Hanayok
2019-01-14 18:57:58 +08:00
如果你的 m2m 字段写在 auth 表的话就这样
django_info.auth_user.objects.exclude(fd_group__fabric_name='default').all()
xuanbg
2019-01-15 07:32:09 +08:00
select u.*
from django_info.auth_user u
join fd_users_groups_m2m r on r.user_id = i.id
join fd_group g on g.id = r.group_id
and g. fabric_name = 'default';

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/526977

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX