У меня есть база данных MySQL с несколькими таблицами, и эти таблицы содержат несколько одинаковых столбцов, и я хочу поместить эти данные в электронную таблицу Google.
Например:
table1
содержит id
, name
, page
и несколько столбцов, специфичных для этой таблицы.
table2
содержит id
, name
, page
и паруразличные столбцы
table3
также имеют id
, name
, page
и другие уникальные столбцы и т. д.
Это мой код:
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);
}
}
Можно ли выбрать идентификатор, имя и страницу из всех трех таблиц в одном запросе и получить результат в порядке поступления?Я ввел один и тот же идентификатор в каждую таблицу, то есть 1
в table1
, 1
в table2
и 1
в table3
в этом порядке, затем я сделал то же самое с 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
Я бы выложил картинку, но яне имеюдостаточно репутации.
Мне нужен выход в порядке прибытия, какие-либо предложения?