Для некоторой предыстории, у меня есть система заказов, которая заполняет базу данных. В базе данных есть две таблицы, order_Parent, order_Children.
order_Parent содержит более широкую информацию, такую как ID, shippingDesination, createdBy, highPriority. Столбцов больше, но я сосредоточился на столбце ID и highPriority для order_Parent.
При просмотре таблицы order_children у одного родительского заказа может быть несколько дочерних элементов. Дочерние элементы являются отдельными частями заказа, а некоторые столбцы - это itemDescription, количество, приоритет, linkID. Опять же, столбцов больше, но для таблицы order_Children меня беспокоят только столбец linkID и столбец приоритета.
Например, предположим, что Джон Смит заказывает 3 винта, 2 гайки, 1 болт. Все они могут иметь разные приоритеты в столбце приоритета. Что меня беспокоит, так это то, если это приоритет 1, что означает, что мне нужно ускорить заказ.
Итак, после выполнения этого заказа таблицы будут выглядеть так:
order_Parent:
ID: 15
shippingDesination: 123 Road St
created Автор: John Smith
highPriority: null
order_Children:
itemDescription: винты
количество: 3
приоритет: 1
linkID: 15
itemDescription: гайки
количество: 2
приоритет: 0
linkID: 15
itemDescription: болты
количество: 1
приоритет: 0
linkID: 15
Итак, здесь мы видим, что дети могут иметь разные приоритеты. Затем я хочу обновить строку order_Parent highPriority до 1, если какие-либо соответствующие дочерние элементы имеют приоритет 1.
Я подумал о том, чтобы объединить таблицы вместе, используя linkID и ID в качестве общей точки. Но я не знаю, как присоединиться, когда есть несколько дочерних экземпляров с тем же идентификатором, что и у родительского.
После того, как я сделаю таблицу, я считаю, что следующим шагом будет просмотр приоритетов child_Order и наличие равно 1, используйте функцию UPDATE для обновления соответствующей строки в таблице order_Parent.
Это то, что у меня есть до сих пор, но оно возвращает слишком много строк, многие строки кажутся дубликатами, но я Я не уверен, почему, потому что я только начал SQL. Я также не добавил в запрос функцию UPDATE, но хотел бы знать, в каком направлении go дюйм.
SELECT Parent.ID AS ID
,Parent.HighPriority AS HighPriority
,order_Children.Priority AS Priority
FROM order_Parent, order_Children
INNER JOIN order_parent AS Parent ON Parent.ID = order_Children.linkID