富豪的SQLの実例
http://d.hatena.ne.jp/rokugen/20070625#1182754549
http://d.hatena.ne.jp/aufheben/20070624/1182708030
はてなRSS巡回先で微妙に盛り上がってるので、微妙に反応してみる。ただし、SQLレッスンの趣旨からちょっと離れるだろうけど。
流れ的にはid:aufheben氏の「解答3」だったりid:rokugen氏の後者だったりに近いんだけど、思いっきり富豪的にこうしてしまうかも。
String sql1 = "SELECT * FROM Prefecturals\n"; ResultSet rs = connection.createStatement().executeQuery(sql1); while(rs.next()){ String prefecturalID = rs.getString("PrefecturalID"); String prefecturalName = rs.getString("PrefecturalName"); int count = 0; String sql2 = "SELECT COUNT(*) as count FROM Customers\n" + "WHERE PrefecturalID = '" + prefecturalID + "'"; ResultSet rs2 = connection.createStatement().executeQuery(sql2); if(rs2.next()){ count = rs2.getInt("count"); } //以下、諸々 } //以下、諸々
メリットは
- SQL1発行とSQL2発行を外に出すと使い回せる
- オブジェクト化しやすい
- 可読性がよい(と思う。コードとしては案外素直じゃないですか?)
の2点でしょうか。
デメリットはダントツ遅さでしょうが、この例だとSQL1の結果は50件もないですし、案外気にならない程度に収まるかと。そのうち実測してみます。