javascript - 从不同的表中选择并组织相同的列

标签 javascript mysql google-apps-script google-sheets

我有一个包含多个表的 MySQL 数据库,这些表包含多个相等的列,我想将这些数据推送到 Google 电子表格中。

例如:

table1 包含 idnamepage 以及一些特定于该表的列。

table2 包含 idnamepage 和几个不同的列

table3还有idnamepage以及更多独特的列等。

这是我的代码:

function readFromTable() {
  var ss = SpreadsheetApp.getActive();
  var sheetDetails = ss.getSheetByName('Details');
  var sheetData = ss.getSheetByName('Clients');

  var host = sheetDetails.getRange("B1").getValue();
  var databaseName = sheetDetails.getRange("B2").getValue();
  var userName = sheetDetails.getRange("B3").getValue();
  var password = sheetDetails.getRange("B4").getValue();
  var port = sheetDetails.getRange("B5").getValue();

  var url = 'jdbc:mysql://'+host+':'+port+'/'+databaseName;
  Logger.log(url);
  Logger.log(userName);
  Logger.log(password);
  var sql = 'SELECT id, name, page FROM table1 UNION SELECT id, name, page FROM table2 UNION SELECT id, name, page FROM table3';
try{
  var connection = Jdbc.getConnection(url, userName, password);

  var results = connection.createStatement().executeQuery(sql);
  var metaData = results.getMetaData();
  var columns = metaData.getColumnCount();

// Retrieve metaData to a 2D array
   var values = [];
   var value = [];
   var element = '';

// Get table headers
   for(i = 1; i <= columns; i ++){
   element = metaData.getColumnLabel(i);
   value.push(element);
}
   values.push(value);

// Get table data row by row
   while(results.next()){
   value = [];
   for(i = 1; i <= columns; i ++){
    element = results.getString(i);
    value.push(element);
  }
  values.push(value);
}

// Cloese connection
   results.close();

// Write data to sheet Data
SpreadsheetApp.flush();
sheetData.getRange(2, 1, values.length, value.length).setValues(values);
SpreadsheetApp.getActive().toast('The data has been updated.');
}catch(err){
SpreadsheetApp.getActive().toast(err.message);
} 
}

是否可以在一个查询中从所有三个表中选择 id、name 和 page,并按到达顺序获取结果?我在每个表中一一输入相同的id,我的意思是,table1中的1table2中的1table3 中的 1 按此顺序,然后我对 2 等执行相同操作,输出应如下所示:

id 名称 页面

1 名称1 玩具

1 名称2 食物

1 name3 电子产品

2 name4 玩具

2 name5 食物

2 name6 电子产品

3 name7 玩具

3 name8 食物

3 name9 电子产品

但是在输出中它们按表分组,这对我不起作用:

id 名称 页面

1 名称1 玩具

2 name4 玩具

3 name7 玩具

1 名称2 食物

2 name5 食物

3 name8 食物

1 name3 电子产品

2 name6 电子产品

3 name9 电子产品

我想发布一张照片,但我没有足够的声誉。

我需要按到达顺序输出,有什么建议吗?

最佳答案

您可以使用ORDER BY子句:

var sql = '(SELECT id, name, page FROM table1) UNION (SELECT id, name, page FROM table2) UNION (SELECT id, name, page FROM table3) ORDER BY id';

关于javascript - 从不同的表中选择并组织相同的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56240838/

相关文章:

javascript - Firebug 无法加载 js 文件

php - 使用 where 和 order by 语句时从数据库获取行号

html - 更改行中间的 GMail 文本颜色

javascript - 谷歌地图容器在动画后无法正确调整大小

javascript - "Dropdown-Menu"试图打开 child 时关闭

php - 无法从具有相同名称的 2 个不同表中同时选择 2 个字段

php - localhost 当前无法处理此请求。运行特定代码时出现 HTTP ERROR 500

javascript - Google Sheets 脚本visiblesheets 帮助

javascript - 如何使用 Google Apps 脚本将 Formulas() 设置为某个范围?

javascript - 分贝到线性转换