根据相关 table 更新 HSQL table 值
Update HSQL table values based on related table
我有 2 个相关表:"Universities"(id, num_courses) 和 "Courses" (id, university_id)。我需要 University.num_courses 来表示 COUNT 门课程。
我可以查询我需要的数据:
SELECT
Universities.id,
COUNT(Courses.university_id) as NumCourses
FROM Courses
JOIN Universities ON Universities.id = Courses.university_id
GROUP BY Universities.id
我如何用它更新大学?可以自动完成吗?
我不确定这就是你所说的 "automatically," 的意思,但可以通过循环来完成:
Sub UpdateUniversities
Context = CreateUnoService("com.sun.star.sdb.DatabaseContext")
databaseURLOrRegisteredName = "file:///C:/Users/JimStandard/Desktop/New Database.odb"
Db = Context.getByName(databaseURLOrRegisteredName )
Conn = Db.getConnection("","") 'username & password pair - HSQL default blank
Stmt = Conn.createStatement()
strSQL = "SELECT Universities.id, " & _
"COUNT(Courses.university_id) as NumCourses " & _
"FROM Courses " & _
"JOIN Universities ON Universities.id = Courses.university_id " & _
"GROUP BY Universities.id"
oResult = Stmt.executeQuery(strSQL)
Do While oResult.next()
university_id = oResult.getLong(1)
num_courses = oResult.getLong(2)
Stmt = Conn.createStatement()
strSQL = "UPDATE ""Universities"" SET ""num_courses"" = " & _
num_courses & " WHERE ""id"" = " & university_id
Stmt.executeUpdate(strSQL)
Loop
Conn.close()
End Sub
相关:How to create an update query with Open Office Base?
我有 2 个相关表:"Universities"(id, num_courses) 和 "Courses" (id, university_id)。我需要 University.num_courses 来表示 COUNT 门课程。
我可以查询我需要的数据:
SELECT
Universities.id,
COUNT(Courses.university_id) as NumCourses
FROM Courses
JOIN Universities ON Universities.id = Courses.university_id
GROUP BY Universities.id
我如何用它更新大学?可以自动完成吗?
我不确定这就是你所说的 "automatically," 的意思,但可以通过循环来完成:
Sub UpdateUniversities
Context = CreateUnoService("com.sun.star.sdb.DatabaseContext")
databaseURLOrRegisteredName = "file:///C:/Users/JimStandard/Desktop/New Database.odb"
Db = Context.getByName(databaseURLOrRegisteredName )
Conn = Db.getConnection("","") 'username & password pair - HSQL default blank
Stmt = Conn.createStatement()
strSQL = "SELECT Universities.id, " & _
"COUNT(Courses.university_id) as NumCourses " & _
"FROM Courses " & _
"JOIN Universities ON Universities.id = Courses.university_id " & _
"GROUP BY Universities.id"
oResult = Stmt.executeQuery(strSQL)
Do While oResult.next()
university_id = oResult.getLong(1)
num_courses = oResult.getLong(2)
Stmt = Conn.createStatement()
strSQL = "UPDATE ""Universities"" SET ""num_courses"" = " & _
num_courses & " WHERE ""id"" = " & university_id
Stmt.executeUpdate(strSQL)
Loop
Conn.close()
End Sub
相关:How to create an update query with Open Office Base?