相关疑难解决方法(0)

如何以多次通过关系过滤SQL结果

假设我有表student,club以及student_club:

student {
    id
    name
}
club {
    id
    name
}
student_club {
    student_id
    club_id
}
Run Code Online (Sandbox Code Playgroud)

我想知道如何找到足球(30)和棒球(50)俱乐部的所有学生.
虽然这个查询不起作用,但它是我迄今为止最接近的事情:

SELECT student.*
FROM   student
INNER  JOIN student_club sc ON student.id = sc.student_id
LEFT   JOIN club c ON c.id = sc.club_id
WHERE  c.id = 30 AND c.id = 50
Run Code Online (Sandbox Code Playgroud)

mysql sql postgresql relational-division sql-match-all

95
推荐指数
4
解决办法
2万
查看次数

Django:过滤RawQuerySet

我有一些奇怪的查询,所以我必须执行原始SQL.问题是这个查询变得越来越大,并且有许多可选的过滤器(排序,列标准等).

所以,鉴于此查询:

SELECT DISTINCT Camera.* FROM Camera c
     INNER JOIN cameras_features fc1 ON c.id = fc1.camera_id AND fc1.feature_id = 1
     INNER JOIN cameras_features fc2 ON c.id = fc2.camera_id AND fc2.feature_id = 2
Run Code Online (Sandbox Code Playgroud)

这大致是Python代码:

def get_cameras(features):
  query = "SELECT DISTINCT Camera.* FROM Camera c"
  i = 1
  for f in features:
    alias_name = "fc%s" % i
    query += "INNER JOIN cameras_features %s ON c.id = %s.camera_id AND %s.feature_id = " % (alias_name,alias_name,alias_name)
    query += " %s "
    i += …
Run Code Online (Sandbox Code Playgroud)

django django-models

9
推荐指数
1
解决办法
1万
查看次数