squadbrodyaga
@squadbrodyaga
帆は風を変えた

Два одинаковых товара, но разного цвета. Как отобразить это в реляционной модели?

Таблицы:
Таблица "Товары":

    id (PRIMARY KEY)
    id_категории (FOREIGN KEY)
    название

Таблица "Атрибуты товаров":

    id (PRIMARY KEY)
    id_категории (FOREIGN KEY)
    название

Таблица "Значения атрибутов товаров":

    id (PRIMARY KEY)
    id_товара (FOREIGN KEY)
    id_атрибута (FOREIGN KEY)
    значение

Есть несколько одинаковых товаров с разными цветами, как в таком случае поступить с изображениями этих товаров? Как связать цвет и изображение?
  • Вопрос задан
  • 89 просмотров
Пригласить эксперта
Ответы на вопрос 2
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
select 
    p.name, 
    group_concat(case when a.name = 'color' then pa.val end) colors
from products p
join products_attributes pa on p.id = pa.product_id
join attributes a on a.id = pa.attribute_id
group by p.id, p.name;


https://sqlize.online/sql/mysql57/41ca313cb32e2f96...
Ответ написан
Комментировать
tsklab
@tsklab
Здесь отвечаю на вопросы.
Таблица "Изображение"
ID
Type
Object
Image

SELECT TOP 1 Image
  FROM "Изображение" i
    LEFT JOIN "Значения атрибутов товаров" v ON i.Type = 'V' AND i.Object = v.ID
  WHERE i.Type = 'P' AND i.Object = ?P_ID 
    AND v.id_товара = ?P_ID AND v.значение = ?V_Color
  ORDER BY CASE
             WHEN NOT v.ID IS NULL THEN 1
             ELSE 2
           END
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы