0

「大学」(id、num_courses)と「コース」(id、university_id)の2つの関連テーブルがあります。COUNT のコースを表すために University.num_courses が必要です。

必要なデータを照会できます。

SELECT 
Universities.id,
COUNT(Courses.university_id) as NumCourses
FROM Courses
JOIN Universities ON Universities.id = Courses.university_id
GROUP BY Universities.id

それを使用して大学を更新するにはどうすればよいですか? それは自動的に行うことができますか?

4

1 に答える 1

1

これが「自動的に」という意味かどうかはわかりませんが、ループで実行できます。

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

関連: Open Office Base で更新クエリを作成する方法は?

于 2016-01-11T19:57:54.970 に答える