mtOrder
-------
idOrder idCust
1 123423
2 324602
dtOrderBox
----------
idOrder idBox idItem Quantity usedBox
1 1 39 2 1
1 2 34 30 0
1 3 39 2 1
2 1 39 10 1
2 2 24 5 0
dtOrderDetail
-------------
idOrder idBox idItem Quantity
1 1 45 10
1 3 46 10
2 1 45 15
Как показано на рисунке выше, 3 табл где соединены idOrder
и dtOrderBox
и dtOrderDetail
также связаны снова idBox
. dtOrderBox
используется для записи, а также без коробки. dtOrderDetail
используется для записи содержимого ящика, который является заказом в dtOrderBox
.Присоединение 3 таблицы с более чем 1 относительно
Проблема заключается, когда я пытался присоединиться к этому дереву стола вместе
select * from mtOrder
Join dtOrderBox on dtOrderBox.idOrder = mtOrder.idOrder
Join dtOrderDetail on dtOrderDetail.idOrder = mtOrder.idOrder and dtOrderDetail.idBox = dtOrderBox.idBox
Используя это, результат будет показать весь пункт в dtOrderBox, что с помощью Box. Элемент, который не использует поле (как показано в колонке dtOrderBox
usedBox
), не будет отображаться. Спасибо за помощь!
Desired Result
--------------
idOrder idBox idItem Quantity
1 1 45 20
1 2 34 30
1 3 46 20
2 1 45 150
2 2 24 5
Если вы будете использовать левый Присоединяйтесь затем "dtOrderDetail.idOrder = mtOrder.idOrder" это условие не является обязательным. –
@RaviHirani, если я не использую «dtOrderDetail.idOrder = mtOrder.idOrder», тогда результат 'dtOrderDetail' и' dtOrderBox' не будет соответствовать. –
Это также сильно помогло бы, если бы вы показали нам желаемый результат , Помните об этом, когда задаете вопросы о переполнении стека. –