繁体   English   中英

从不同的表中选择和组织相同的列

[英]Select and organize same columns from different tables

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

例如:

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每个表一个接一个,我的意思是, 1table11table21table3的顺序,那么我也同样用2和等,这是输出应该是什么样子:

id name page

1 name1 toys

1 name2 food

1 name3 electronics

2 name4 toys

2 name5 food

2 name6 electronics

3 name7 toys

3 name8 food

3 name9 electronics

但是在输出中,它们按表格分组,这对我没有用处:

id name page

1 name1 toys

2 name4 toys

3 name7 toys

1 name2 food

2 name5 food

3 name8 food

1 name3 electronics

2 name6 electronics

3 name9 electronics

我会张贴一张照片,但我的名声不够。

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

您可以使用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';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM