我需要您提供有关遍历和返回数据库值的最佳方法的建议(如下所示)。数据库的结构由另一个应用程序设置。
在这种情况下,系统当前如何返回ID = 6的用户的值:
查找项目实例和项目模块(1和培训)并返回行ID。使用此行ID,在表2中查找相应的itemid和userid。
grade_grades
grade_items
当前SQL /函数:
功能1 {SELECT ID FROM grade_items WHERE itemmodule =' training'和iteminstance =' 1' }(返回ID)
功能2 {使用返回的ID,运行以下内容:SELECT * FROM grade_grades WHERE itemid =' 4' AND userid =' 6'}(返回finalgrade)
是否有更简单的方法在一个MYSQL语句中获取所有这些而不是运行两个查询? (我之所以要问的原因是因为每个查询都有可能会运行100到10000次 - 具体取决于列表中的用户数量。目前 - 如果我运行服务器,服务器会停止大约15分钟查询所有记录(没有pagenation来计算总数)
答案 0 :(得分:1)
加入他们:
SELECT g.*
FROM grade_items g
JOIN grade_grades g2
ON(g2.id = g.itemid)
WHERE g2.itemmodule = 'training' and g2.iteminstance = '1'
或者,使用IN()
:
SELECT g.*
FROM grade_items g
WHERE g.itemid IN(SELECT g2.id FROM grade_grades g2
WHERE g2.itemmodule = 'training'
and g2.iteminstance = '1')
答案 1 :(得分:0)
使用 JOIN 组合来自两个或多个表的行
SELECT *
FROM grade_grades
JOIN grade_items ON grade_grades.id = grade_items.itemid
WHERE itemid = 4