Я пытаюсь сделать запрос MySQL для фильтрации данных из таблицы. Фактически, я хочу сделать следующее:
SELECT data FROM table WHERE column IN ?
Фильтр исходит из флажков в форме на веб-странице, поэтому я могу довольно легко передать массив или объект, но это ' будет различное количество параметров для IN каждый раз, поэтому я не могу использовать их несколько?. Я попытался создать for l oop, чтобы несколько запросов объединяли массивы, возвращаемые запросами, но у меня возникли проблемы с областью видимости. Я также пытался передать массив непосредственно в запрос, но это вызывало синтаксическую ошибку. Я уверен, что на это есть простой ответ, но я не уверен, как это сделать.
Изменить: добавлен исходный код:
Вот где я:
const filterShowQuery = `SELECT sl_Show.showId, sl_Band.BandName,
sl_Show.date, sl_Venue.venueName,
sl_Show.length, sl_Show.attendance, sl_Show.encore FROM sl_Show
JOIN sl_Band on sl_Show.BandID = sl_Band.BandId
JOIN sl_Venue on sl_Show.VenueId = sl_Venue.VenueId
WHERE sl_Band.BandName IN (?)
ORDER BY sl_Band.BandName;`;
Пытаетесь поместить массив в? в WHERE sl_Band.BandName IN
const getShows = (req, res,next) =>{
var {bands, venues} = req.body;
var i = 0; //left over from previous attempt
var data = [];
for (b in bands){
mysql.pool.query(filterShowQuery, bands[b], (err, result) => {
if(err){
console.log('filter band error');
next(err);
return;
}
data = data.concat(result);
console.log(data); //data concatenates property and increases through for loop
})
// same action to be performed with venues once solved
// for (v in venues){
// conditions[i] = venues[v];
// i++;
console.log(data); //data is empty when logging from here or using in res
res.json({rows:data});
}
}