#mysql #logic #intersect
#mysql #Логические #пересекаться
Вопрос:
У меня есть база данных, таблицы которой представляют собой фильтры транспортных средств, и они заполнены идентификаторами транспортных средств. Я должен сделать один запрос в базу данных из массива ,который выглядит примерно так [[седан, кабриолет], [автоматический], [электрический]]. Это означает, что мне нужен седан ИЛИ кабриолет, А также автоматический И электрический. У меня был этот код
/* from a 2d array, creates a SQL query with the desired logic: each inner array is combined with 'or' logic, then they are combined with 'and' logic. */ let tempQuery = ""; let sqlQuery = ""; for (let i = 0; i lt; filter2D.length; i ) { tempQuery = "";; for (let j = 0; j lt; filter2D[i].length; j ) { tempQuery = ` SELECT filter_${filters2DName[i][j]}.vehicle_id FROM filter_${filters2DName[i][j]}` if (j lt; filter2D[i].length - 1) { tempQuery = ' UNION'; } } sqlQuery = ' (' tempQuery ' )'; if (i lt; filter2D.length - 1) { sqlQuery = ' INTERSECT'; } }
что сработало хорошо, но теперь я перейду в MySQL, и INTERSECT не поддерживается, и я не уверен, что это лучший способ продолжить. Есть ли способ спасти этот код здесь?
Спасибо.