Выполнение следующего запроса SELECT неожиданно дает два раза одну и ту же запись, когда в базе данных есть только 1 продукт. Однако есть несколько подкатегорий, связанных с одной и той же категорией, но я до сих пор не понимаю, почему это дало бы два результата.
ERD:
Полное содержимое БД:
SELECT p.id AS productId, p.name AS productName FROM product p
INNER JOIN product_base AS pb ON pb.id = p.product_base_id
INNER JOIN product_category AS pc ON pc.id = pb.product_category_id
INNER JOIN product_subcategory AS psc ON psc.product_category_id = pc.id;
Возвращает:
Почему этот продукт возвращается два раза?
Добавление WHERE psc.id = 2
все равно даст один продукт, в то время как предполагается, что этот продукт должен быть найден только тогда, когда psc.id = 1
.
Что мне здесь не хватает? Что-то не так со структурой? Как получить все продукты, которые имеют определенную подкатегорию?
Нужно ли хранить product_category_id
и product_subcategory_id
непосредственно в product
?