BasicDetails
+----+---------------------+
| DocumentId | DocumentNo |
+----+---------------------+
| 1 | 100 |
+----+---------------------+
LineItems
+----+--------+------------+
| Id | ItemNo | DocumentId |
+----+--------+------------+
| 1 | 4001 | 1 |
| 2 | 4002 | 1 |
| 3 | 4003 | 1 |
| 4 | 4004 | 1 |
+----+--------+------------+
PickList
+----+------------+---------------+--------+----------+------------+
| Id | DocumentNo | ReservationNo | ItemNo | StatusId | PickListNo |
+----+------------+---------------+--------+----------+------------+
| 1 | 100 | 100 | 4001 | 1 | 0000001 |
| 2 | 100 | 100 | 4002 | 2 | 0000001 |
| 3 | 100 | 100 | 4001 | 2 | 0000002 |
| 4 | 100 | 100 | 4003 | 2 | 0000002 |
+----+------------+---------------+--------+----------+------------+
Желаемый результат:
+----+------------+----------------+
| Id | DocumentNo | LineItemCount |
+----+------------+----------------+
| 1 | 100 | 3 |
+----+------------+----------------+
Basi c детали в основной таблице. Для одной записи в BasicDetails может быть несколько LineItems.
ItemNo уникален в lineItem.
Может быть несколько pickList для BasicDetails. Например: DocumentNo 100 here has two pickLists 0000001 and 0000002
Может быть один и тот же itemno в 0000001 и 0000002, но не может быть повторяющегося itemno для одного и того же списка выбора.
PickList Сценарий 2:
+----+------------+---------------+--------+----------+------------+
| Id | DocumentNo | ReservationNo | ItemNo | StatusId | PickListNo |
+----+------------+---------------+--------+----------+------------+
| 1 | 100 | 100 | 4001 | 2 | 0000001 |
| 2 | 100 | 100 | 4002 | 2 | 0000001 |
| 3 | 100 | 100 | 4001 | 2 | 0000002 |
| 4 | 100 | 100 | 4003 | 2 | 0000002 |
+----+------------+---------------+--------+----------+------------+
Желаемый результат:
+----+------------+----------------+
| Id | DocumentNo | LineItemCount |
+----+------------+----------------+
| 1 | 100 | 4 |
+----+------------+----------------+
PickList Сценарий 3:
+----+------------+---------------+--------+----------+------------+
| Id | DocumentNo | ReservationNo | ItemNo | StatusId | PickListNo |
+----+------------+---------------+--------+----------+------------+
| 1 | 100 | 100 | 4001 | 1 | 0000001 |
| 2 | 100 | 100 | 4002 | 2 | 0000001 |
| 3 | 100 | 100 | 4001 | 1 | 0000002 |
| 4 | 100 | 100 | 4003 | 2 | 0000002 |
+----+------------+---------------+--------+----------+------------+
Желаемый результат будет:
+----+------------+----------------+
| Id | DocumentNo | LineItemCount |
+----+------------+----------------+
| 1 | 100 | 3 |
+----+------------+----------------+
Мой запрос:
select b.documentid,b.documentno,count(l.id) cnt
from basicdetails b left join lineitems l on b.documentid= l.documentid
left join picklist p on l.itemno =p.itemno where p.statusid=1
group by b.documentid,b.documentno