タイトルを読む必要があるのはわかりにくいと思いますので、よりよく説明します。 私のデータベースは次のようである:SQLのあるテーブルのフィールドの平均で列を取得する方法
表1 表2 表3 及びこれら...
ユーザーのような他のテーブルは1
のようにテキストフィールドに値を挿入し、私は彼らに1
が含まれている名前だけが表示されます。私はこの方法でこれを行う:列vの平均によって順序を見つけ
ArrayList<String> found = new ArrayList<String>();
ArrayList<String> allTable = getAllTableInDB();
for(String table:allTable){
try {
ResultSet rs = stat.executeQuery("SELECT * FROM '"+table+"'");
while(rs.next()){
if(!found.contains(rs.getString("name")) && rs.getString("name").equals(WhatUserInserts))
found.add(rs.getString("name"));
}
} catch (SQLException ex) {
ex.printStackTrace();
Logger.getLogger(DB.class.getName()).log(Level.SEVERE, null, ex);
}
}
私が今やりたいことは、この名前の「最高」を計算することである
つのテーブルのために、私は私ができることを知っています。
SELECT name FROM table GROUP BY name ORDER BY AVG(v) DESC
このテーブルの値の上限については、どうすればできますか?
私はこの方法で解決
だけでなく、私の質問を説明Dan P
に感謝願っています:
あなたがMaxまたはすべてのテーブルの平均が、これはあなたの名前の最大のV値を取得しますしたいと仮定すると、
ArrayList<String> tables = getAllTableInDB();
String query = "SELECT * FROM (";
String union = " UNION ";
for(int i=0;i<tables.size();i++){
query+="SELECT * FROM '"+tables.get(i)+"' WHERE name LIKE '%"+find+"%'";
query = i==tables.size()-1?query:query+union;
}
query+=") GROUP BY nome ORDER BY AVG(venduti) DESC";
良い質問.. – JackTurky