У меня есть три таблицы со схемой данных, например:
TABLE user (
user_id BINARY(16) PRIMARY KEY NOT NULL,
created DATETIME NOT NULL,
last_updated DATETIME,
coordinator BINARY(16),
num_updates INT NOT NULL
);
TABLE summary (
user_id BINARY(16) PRIMARY KEY NOT NULL,
calculation_time DATETIME NOT NULL,
calculation_method VARCHAR(25) NOT NULL,
label VARCHAR(50) NOT NULL,
critical_count INT NOT NULL,
median_risk FLOAT(10)
);
TABLE actions(
user_id BINARY(16) PRIMARY KEY NOT NULL,
label VARCHAR(50) NOT NULL,
access_count INT NOT NULL,
median FLOAT(10)
);
Данные для всех пользователей (таблица пользователей) просто извлекаются с помощью функции обработчика лямбда следующим образом:
const AWS = require('aws-sdk');
const rdsDataService = new AWS.RDSDataService();
module.exports.hello = async (event, context, callback) => {
const req_id = "5a9dbfca-74d6-471a-af27-31beb4b53bb2";
const sql = 'SELECT * FROM user WHERE user_id=:id';
try {
const params = {
resourceArn: 'arn:aws:rds:us-west-********************',
secretArn: 'arn:aws:secretsmanager:us-west**************',
sql,
database: 'dev_db1',
continueAfterTimeout: true,
includeResultMetadata: true,
parameters: [{ 'name': 'id', 'value': { 'stringValue': `${req_id}` } }]
}
const db_res = await rdsDataService.executeStatement(params).promise();
const convertToJson = (dbresponse) => {
const columns = dbresponse.columnMetadata.map(col => col.name);
const row_data = dbresponse.records.map(row => {
const json_obj = {};
row.map((val, i) => {
json_obj[columns[i]] = Object.values(val)[0];
});
return json_obj;
});
return row_data;
};
const modified_data = convertToJson(db_res);
const response = {
body: {
statusCode: 200,
message: 'Data fetched successfully',
data: modified_data,
}
};
callback(null, response);
} catch (error) {
console.log('Error Received', error);
const error_res = {
body: {
statusCode: error.statusCode,
message: error.message,
data: null
}
}
callback(null, error_res);
}
};
Если то же самое выполнить для другой таблицы summary
или actions
, это также сработает. Теперь мне нужно объединить все столбцы этих трех таблиц, а затем вернуть данные (возвращаемые строки должны совпадать на основе req_id
). Мой рабочий фрагмент: https://dbfiddle.uk/?rdbms=mysql_5.7&fiddle=016ecc94a616a<81011fbaca81011fbaca /а>
Но полученный окончательный результат содержит столбец user_id
в дублированном виде, т.е. трехкратное включение. Мне не нужно, чтобы один и тот же столбец повторялся трижды.
Я немного новичок в обработке запросов MySQL, поэтому не могу понять точную причину ошибки, даже если таблица существует. Версия MYSQL, используемая в Aurora, — 5.7.
Любая помощь, чтобы решить то же самое, приветствуется!