SQL: перенос из столбца в строку, размер системы, мода

Я изо всех сил, надеюсь, вы можете помочь мне! Приложение представляет собой ERP-систему в MS ACCESS для модной розничной торговли.

Вопрос: Как я могу добавить строку в Таблицу 3 с соответствующими размерами статьи SizeID1, SizeID2 и т. Д. В соответствии с системой размеров таблицы Table2?

Таблица 1: Детали товара, содержащие систему размеров

ArticleID | SizeType
--------------------  
1         | US  
2         | EU  

Таблица 2: Системы разных размеров для разных регионов

SizeID | Size | SizeType 
------------------------ 
1      | S    | US
2      | M    | US
3      | L    | US
4      | XL   | US
5      | 36   | EU
6      | 38   | EU
7      | 40   | EU

Таблица 3: Детали заказа

OrderID | ArticleID | Size1 | Amount1 | Size2 | Amount2 | Size3 | Amount3  
------------------------------------------------------------------------- 
1       | 1         | S     | 1       | M     | 3       | L     | 1  
2       | 2         | 36    | 2       | 38    | 1       | 40    | 3
3       | 2         | 36    |         | 38    |         | 40    |

Строка с OrderID = 3 является целью внутреннего запроса для ArticleID 2. Затем я могу ввести сумму до соответствующего размера. Спасибо за вашу помощь!!

1 ответ

Не совсем понятно, чего вы здесь добиваетесь, но я думаю, что это может быть из-за того, что ваш дизайн базы данных немного нарушен.

Вы, вероятно, привыкли работать с электронными таблицами, потому что вы, кажется, разработали свой Table3 как будто это была электронная таблица. Каждый раз, когда вы получаете повторяющиеся поля в таблице базы данных (например, Size1, Size2, Size3....), это признак того, что вам нужно больше нормализовать.

Пожалуйста, прочитайте о нормализации базы данных: http://www.studytonight.com/dbms/database-normalization.php (а также Google в целом для нормализации базы данных для получения дополнительной информации).

Я подозреваю, что вам нужно что-то вроде этого:

Таблица статей:

ArticleID | ArticleName   | SizeType(FK to SizeType table)
1         | Blue T-shirt  | 1
2         | Red T-shirt   | 2

Таблица SizeType:

SizeTypeID | SizeTypeDescription
1          | US
2          | EU

Таблица размеров:

SizeID | SizeType(FK) | SizeDescription
1      | 1            | 38
2      | 1            | 40
3      | 2            | M
4      | 2            | L

Таблица предметов:

ItemID | ArticleID(FK) | SizeID(FK)
1      | 1             | 1      'Blue T-shirt size 38
2      | 1             | 2      'Blue T-shirt size 40
3      | 2             | 3      'Red T-shirt size M
4      | 2             | 4      'Red T-shirt size L

Стол заказов:

OrderID | CustomerID (FK) | OrderDate | etc. (other info you need to store about an order)
1       | 2458            | 01/01/2001|
2       | 3452            | 02/02/2002|

Таблица деталей заказа:

OrderDetailsID | OrderID(FK) | ItemID (FK) | Quantity
1              | 1           | 3           | 6
2              | 1           | 4           | 3
3              | 2           | 1           | 1

Таким образом, связывая все обратно, Клиент с ID 2458 заказал 6 футболок красного цвета размера M и 3 красных футболки размера L, а Клиент с идентификатором 3452 заказал футболку голубого цвета 1 размера 38.

Обратите внимание, что вы также реально есть PRICE поле либо в таблице "Товары" (если цена варьируется в зависимости от размера товара), либо в таблице "Товары" (если цена одинакова для каждого размера). CustomerID также будет ссылаться на таблицу, содержащую данные клиента (имя, адрес, имя пользователя / пароль и т. Д.).

У вас также могут быть другие вещи, которые я здесь не показывал, например, в таблице "Статьи" или в таблице "Товары" вы, вероятно, будете иметь идентификатор поставщика, который сообщает вам, у кого вы покупаете этот элемент, а также идентификатор поставщика, который будет уникальный код (штрих-код?), который вы используете для заказа этого товара.

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

Другие вопросы по тегам