Одна таблица, 2 столбца - из 3 таблиц - PullRequest
0 голосов
/ 09 января 2020

Мне нужна ваша помощь.

Я попытался объединить свои таблицы так, чтобы они привели к тому, что в результате получилась только одна таблица с двумя столбцами.

table1: Product

ID_Product | Name
1          | Test
2          | Test2
3          | Test3
4          | Test4

table2: Purchase_Header

ID_Header | Number | Date
1         | 100001 | 2020-01-03
2         | 100002 | 2020-01-02
3         | 100003 | 2020-01-03

table3: Purchase_Line

ID_Line | ID_Header | ID_Product | Price
1       | 1         | 1          | 0,5
2       | 1         | 2          | 0,6
3       | 1         | 3          | 0,7
4       | 2         | 1          | 0,8
5       | 2         | 2          | 0,9
6       | 2         | 4          | 1,0
7       | 3         | 1          | 0,3
8       | 3         | 2          | 0,2
9       | 3         | 3          | 0,1

Объединений:

  • Product | ID_Product на Покупка_Лайн | ID_Product
  • Покупка_Лайн | ID_Header on Purchase_Header | ID_Header

Цель:

  • 1 Таблица с 2 столбцами -> ID_Product и цена
  • Столбец ID_Product -> Все ID_Product из таблицы Product -> ИЛИ в наименьшие идентификаторы с ценой
  • цена столбца -> минимальная цена с последняя покупка (последняя дата) для каждый идентификатор в столбце ID_Product

Возможно, что:

  • Товар был приобретен более одного раза в день
  • Цена отличается в тот же день
ID_Line | ID_Header | ID_Product | Price | Date
1       | 1         | 1          | 0,5       |*2020-01-03*
2       | 1         | 2          | 0,6       |*2020-01-03*
3       | 1         | 3          | 0,7       |*2020-01-03*
4       | 2         | 1          | 0,8       | 2020-01-02
5       | 2         | 2          | 0,9       | 2020-01-02
6       | 2         | 4          | **1,0**   |*2020-01-02*
7       | 3         | 1          | **0,3**   |*2020-01-03*
8       | 3         | 2          | **0,2**   |*2020-01-03*
9       | 3         | 3          | **0,1**   |*2020-01-03*
  • Последняя дата, продукт был приобретен -> 2020-01-03 для ID_Product 1 | 2 | 3 и 2020-01-02 для ID_Product 4
  • Самая низкая цена, в этот день

Результат должен выглядеть следующим образом:

ID_Product | Price
1          | 0,3
2          | 0,2
3          | 0,1
4          | 1,0

Надеюсь, вы мне поможете

Привет Эрик

1 Ответ

0 голосов
/ 09 января 2020

После просмотра кода я понял, что он не является детерминированным c, и результаты оказались противоречивыми, если была добавлена ​​более ранняя дата покупки с более низкой ценой. Обновленный код + ссылка на slqfiddle ниже:

select distinct l.id_product, min(price)
from purchase_line as l
    inner join purchase_header as h on l.id_header = h.id_header
where date in (select max(h.date) as [date] from purchase_line as l
inner join purchase_header as h on l.id_header = h.id_header
    group by l.id_product)
group by l.id_product

http://sqlfiddle.com/#! 18 / 8b2a54 / 1/0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...