1

問題:現在、コードは 1 つのテーブルからデータを引き出すことで完全に機能しますが、複数の Google テーブルから同じデータを引き出したいと考えています。

私の試み:クエリのさまざまなバリエーションを試しましたが、そこに複数のテーブル IDS がある場合、テーブルが表示されません。

作業クエリ:

var query = "SELECT 'City', 'Name', 'Gender', 'Full Address', 'Phone', 'Fax' " + 'FROM 117_2OT0fNljnKrx40V76XuoIFIm-IK6e5Zf3N2o'; 

試行: (クエリの FROM 部分が変更される部分です)

 var query = "SELECT 'City', 'Name', 'Gender', 'Full Address', 'Phone', 'Fax' " + 'FROM "117_2OT0fNljnKrx40V76XuoIFIm-IK6e5Zf3N2o", "1npicUMaGTzjeDuvaDeq_F07V0Flmo1I3y3agGAc", "1BW-kAdtSNggLYOjGKeemSDRCj2eG0VF6R8wLX9w", "1yHhe0GkTBReuFdXelbAeqLzhknnNbs4JdAspndM", "1mfmx02FN7E3_G9J2BHv9FayK-UCz5BuFcxJ6j3A"'; 

Google 視覚化コード全体:

  google.load('visualization', '1', { packages: ['table'] });
  function drawTable() { 
  var query = "SELECT 'City', 'Name', 'Gender', 'Full Address', 'Phone', 'Fax' " + 'FROM 117_2OT0fNljnKrx40V76XuoIFIm-IK6e5Zf3N2o'; 
  var state = document.getElementById('state').value; 

  if (state) { query += " WHERE 'State' = '" + state + "'"; } 
  var queryText = encodeURIComponent(query);
  var gvizQuery = new google.visualization.Query( 'http://www.google.com/fusiontables/gvizdata?tq=' + queryText); 

  gvizQuery.send(function(response) { 
  var table = new google.visualization.Table( document.getElementById('visualization')); 
  table.draw(response.getDataTable(), { showRowNumber: false,           sortAscending: true,            sortColumn: 0 }); 
  });

  } google.setOnLoadCallback(drawTable);
4

1 に答える 1

3

Fusion Tables のクエリ API は SQL に似ていますが、 SQL 互換ではありません。テーブルの結合を処理する場合は、複数のクエリを実行してgoogle.visualization.data.joinメソッドを使用する必要があります。5 つのテーブルの結果を結合するために使用できる基本的なフレームワークを次に示します。

var url = 'http://www.google.com/fusiontables/gvizdata?tq=';
var q1 = new google.visualization.Query(url);
q1.setQuery('SELECT <columns from table 1> FROM <table 1 id>');
q1.send(function (r1) {
    var data1 = r1.getDataTable();

    var q2 = new google.visualization.Query(url);
    q2.setQuery('SELECT <columns from table 2> FROM <table 2 id>');
    q2.send(function (r2) {
        var data2 = r2.getDataTable();

        var q3 = new google.visualization.Query(url);
        q3.setQuery('SELECT <columns from table 3> FROM <table 3 id>');
        q3.send(function (r3) {
            var data3 = r3.getDataTable();

            var q4 = new google.visualization.Query(url);
            q4.setQuery('SELECT <columns from table 4> FROM <table 4 id>');
            q4.send(function (r4) {
                var data2 = r4.getDataTable();

                var q5 = new google.visualization.Query(url);
                q5.setQuery('SELECT <columns from table 5> FROM <table 5 id>');
                q5.send(function (r5) {
                    var data5 = r5.getDataTable();

                    var join1 = google.visualization.data.join(
                        data1,
                        data2,
                        <join method>,
                        [[<key column in data 1>, <matching key column in data 2>] /* etc */],
                        [<non-key columns from data 1>],
                        [<non-key columns from data 2>]
                    );
                    // repeat to join all tables together
                });
            });
        });
    });
});
于 2013-11-07T00:10:16.557 に答える