У меня здесь два стола. Один из них - Items
, а другой - Parts
.Как упростить мои SQL-запросы?
Items
имеют part_id
и Parts
имеют item_id
.
Когда пользователь нажимает кнопку отправки из окна ItemDetail
, данные отправляются на сервер и вставляются в эти две таблицы.
Вот как мой код работает:
- Вставить в
Items
таблицу первой и получить таблицу вid
новых данныхItem
- Вставить в
Parts
с этимitem_id
и другихPart
данных - Обновление до
Items
стол с использованием новыхpart_id
Но могу ли я написать эти три запроса SQL только одним запросом?
Вот структура моих таблиц:
Предметы
Field | Type | Null | Key | Default | Extra |
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| price | int(11) | YES | | NULL | |
| part_id | int(10) unsigned | YES | | NULL | |
| type | varchar(255) | YES | | NULL | |
Части
Field | Type | Null | Key | Default | Extra |
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| item_id | int(10) unsigned | NO | | NULL | |
| name | varchar(255) | NO | | NULL | |
| number | varchar(255) | YES | | NULL | |
Я полагаю, что 1 элемент может иметь несколько частей? В этом случае избавьтесь от 'part_id' из таблицы' Items'. Вы можете получить несколько 'part_id', поэтому нет возможности сохранить его таким образом. Поскольку у вас уже есть почтение из таблицы детали, вы можете сделать ссылку таким образом. Таким образом, вы можете избавиться от шага 3. – Ivar
благодарим за комментарии. Отношение предметов и частей составляет 1: 1. Части должны иметь item_id, но у элементов не должно быть part_id. –
Что говорит @ Ивар все еще стоит даже для ситуации, которую вы описываете. Вы уверены, что они имеют отношение 1: 1? не может ли одна часть использоваться в нескольких элементах? о каких частях/предметах вы говорите? – Jester