簡體   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