Создать БД для пересечения значений таблицы

Есть csv таблица в первом столбце даты, в первой строке продукты, нужно получать значения цены из пересечения строки с датой и столбца с номером продукта. Как реализовать такую БД? Просмотрел целый курс по базам данных MySql, так и не понял...

Не создавать же для каждого продукта отдельный столбец, а если их тысячи?


Ответы (1 шт):

Автор решения: Slava Rozhnev

Вы можете использовать такую схему:

create table products (
    id int primary key auto_increment,
    name varchar(255)
);

create table prices (
    price_date date,
    product_id int,
    price decimal(9,2)
);

Нижу прмер содержимого:

+============+============+=======+
| price_date | product_id | price |
+============+============+=======+
| 2020-11-13 | 8          | 33.34 |
+------------+------------+-------+
| 2020-11-14 | 6          | 72.47 |
+------------+------------+-------+
| 2020-11-15 | 11         | 76.97 |
+------------+------------+-------+
| 2020-11-16 | 10         | 10.19 |
+------------+------------+-------+
| 2020-11-17 | 10         | 0.95  |
+------------+------------+-------+
| 2020-11-18 | 6          | 26.36 |
+------------+------------+-------+
| 2020-11-19 | 10         | 92.26 |
+------------+------------+-------+
| 2020-11-20 | 9          | 15.65 |
+------------+------------+-------+

Запрос для выбоки цены:

select price where price_date = '2020-11-17' and product_id = 10;

Протестировать схему на SQLize.online

→ Ссылка