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 также будет ссылаться на таблицу, содержащую данные клиента (имя, адрес, имя пользователя / пароль и т. Д.).
У вас также могут быть другие вещи, которые я здесь не показывал, например, в таблице "Статьи" или в таблице "Товары" вы, вероятно, будете иметь идентификатор поставщика, который сообщает вам, у кого вы покупаете этот элемент, а также идентификатор поставщика, который будет уникальный код (штрих-код?), который вы используете для заказа этого товара.
Как только ваша база данных структурирована должным образом, будет гораздо проще писать запросы для вставки записей и т. Д.