2017-12-09 8 views
0

私は、JDBCコネクタを使用したアプリケーションスクリプトを使用して、MySQL統計データベースとの接続を作成しています。 1つのスクリプトで複数のクエリを実行して、データベースから特定の情報を1つのシートに取り出すことができるようにしたい すべてのクエリの結果は同じ構造をしています(すべてグループごとです)。YEAR、MONTH、DAY、 VALUEと私は、YEAR、MONTH、DATEの列を固定して、他のすべての結果が結果の列に次々と入力される可能性があるのか​​どうか疑問に思っていました。Google ScriptとJDBCコネクタを使用した複数のSQLクエリ(単一のシート内)

コルAのようなもの:YEAR、コルB:MONTH、コルC:DAY、コルD:クエリ1、コルEからの結果:クエリー2からの結果....

ここでは、私が始めたものです

function loadData() { 
var sheet = SpreadsheetApp.getActiveSheet(); 
var instanceUrl = 'jdbc:mysql://' + address; 
var dbUrl = instanceUrl + '/' + db; 
var conn = Jdbc.getConnection(dbUrl, user, userPwd); 

var stmt = conn.createStatement(); 
stmt.setMaxRows(10); 
var results = stmt.executeQuery('Select YEAR(dateCreated) as yearAdded,MONTH(dateCreated) as monthAdded, DAY(dateCreated) as dayAdded,sum(amount)/100 from stripeTransactions GROUP BY yearAdded ,monthAdded,dayAdded;'); 
var numCols = results.getMetaData().getColumnCount(); 
while (results.next()) { 
    var rowArray = new Array(); 
    for (var col = 0; col < numCols; col++) { 
    rowArray.push(results.getString(col+1)); 
    } 
    sheet.appendRow(rowArray); 
} 

results.close(); 
stmt.close(); 
var stmt2 = conn.createStatement(); 
stmt2.setMaxRows(10); 
var results2= stmt2.executeQuery('Select YEAR(dateAdded) as yearAdded,MONTH(dateAdded) as monthAdded, DAY(dateAdded) as dayAdded,sum(amount) from itunestransactions GROUP BY yearAdded ,monthAdded,dayAdded;'); 
var numCols2 = results2.getMetaData().getColumnCount(); 
while (results2.next()) { 
    var rowArray2 = new Array(); 
    for (var cal = numCols; cal < numCols2; cal++) { 
    rowArray2.push(results2.getString(cal+1)); 
    } 
sheet.appendRow(rowArray2); 
} 

results2.close(); 
stmt2.close(); 
} 

に感謝し (このスクリプトは唯一、すべての結果の行を追加し、私は、各クエリの結果ごとに単一のシートは、その後1内のすべてのシートをマージするかもしれないが、私はむしろからの単一のシートでそれを行うだろうと思います最初)

答えて

0

あなたはoこれを引き出すために、より高度なMySQLを知っていますが、メインクエリにサブクエリをネストすることができます。

さらに、クエリを効率的にするには、クエリをMySQLストアドプロシージャにラップしてから、JDBC経由でApps Scriptからそのプロシージャを呼び出すことができます。

MySQL Subquery

MySQL Stored Procedures

:ここ

は、いくつかのチュートリアルへのリンクあなたが始めるためにあります

関連する問題