Я бы хотел помочь с этой проблемой, с которой я столкнулся.
Я не знаю, возможно ли отменить родительское значение на основе дочернего запроса [notIn].
У меня есть 3 модели, которые связывают многих со многими.
Product -> ProductTag <- Tag </p>
Моя основная задача - получить продукты, которые не связаны с моим предложением where. Это означает, что если в ProductTag есть строка с tag_id и product_id, продукт возвращать не нужно, также, если в ProductTag нет никакого product_id относительно продукта. должны быть возвращены.
Мне удалось получить результаты запроса "правильно" с помощью:
Product.findAll({
where: {
[or]: {
'$ProductTags.id$': null,
'$ProductTags.tag_id$': {[notIn]: queryParams['TagId'].split(',')}
}
},
include: [{
model: ProductTag,
required: false
}]
Моя главная проблема в том, что если у меня есть продукт с id = 1 и в таблице ProductTag есть две строки с:
product_id = 1 & tag_id = 2
product_id = 1 & tag_id = 3
Если я выполню запрос с tag_id = 1, то я ожидаю, что весь продукт будет сброшен с product_id = 1.
Я пробовал группировать товар по Id, но у него есть другие вложенные отношения, которые я продолжаю получать
'Выражение № 30 списка SELECT отсутствует в предложении GROUP BY и содержит неагрегированный столбец \' ProductTags.id \ ', который функционально не зависит от столбцов в предложении GROUP BY; это несовместимо с sql_mode = only_full_group_by '
И я хотел бы знать, возможно ли узнать, что я притворяюсь делать или как это лучше всего сделать.
Заранее большое спасибо!