Чтобы получить информацию о дате, id пользователя и цене для всех записей, в которых произошли изменения цены для продукта Фанта (product_id = 2), вам нужно выполнить следующие шаги:
1. **Выбор записей, связанных с продуктом Фанта**: Вам нужно отобрать лишь те записи, которые относятся к product_id = 2.
2. **Фильтрация изменений цены**: Если триггер был настроен для записи как изменений названия, так и изменений цены, необходимо убедиться, что вы выбираете только те записи, в которых произошло изменение цены.
3. **Подключение первой записи продукта**: Также вам нужно будет включить первую запись о продукте, которая отражает установку названия и цены.
4. **Сортировка результатов**: Все результаты должны быть отсортированы по дате в хронологическом порядке.
Запрос к SQL может выглядеть следующим образом:
```sql
-- Сначала выберем все записи для продукта Фанта
WITH price_changes AS (
SELECT date, user_id, price
FROM change_product_log
WHERE product_id = 2 AND price IS NOT NULL
),
-- Затем выберем первую запись, где устанавливалась цена и название
first_entry AS (
SELECT date, user_id, price
FROM change_product_log
WHERE product_id = 2
ORDER BY date
LIMIT 1
)
-- Объединим обе выборки и отсортируем
SELECT date, user_id, price
FROM price_changes
UNION ALL
SELECT date, user_id, price
FROM first_entry
ORDER BY date;
```
### Объяснение SQL-запроса:
1. **CTE price_changes**: Запись всех изменений цены для продукта с `product_id = 2`, с условием, что цена не равна NULL.
2. **CTE first_entry**: Запись первой информации о продукте с `product_id = 2`, которая включает как установку названия, так и первоначальную цену. Мы используем `LIMIT 1`, чтобы выбрать только первую запись в хронологическом порядке.
3. **Объединение и сортировка**: Используя оператор `UNION ALL`, мы объединяем результаты, полученные из `price_changes` и `first_entry`, и сортируем общий результат по дате в порядке возрастания.
Таким образом, вы получите все необходимые данные о ценах Фанты, включая первую запись о продукте, в хронологическом порядке.