Delete Items in Child table according to a field in Parent table in SQL

I need help with an SQL query
I have 2 tables equipment and items they have one to many relationship

Equipment table has a field called Qty Ordered the count of items in items table should not increase more than qty ordered in equipment table.

So when I do a query like this (what Nathan did/also a view)

SELECT     MarkNo, ItemDifference
FROM         (SELECT     dbo.Equipment.MarkNo, COUNT(dbo.Items.ItemBarcode) - (CASE WHEN QtyOrdered IS NOT NULL THEN QtyOrdered ELSE 0 END) AS ItemDifference
                       FROM          dbo.Equipment INNER JOIN
                                              dbo.Items ON dbo.Equipment.MarkNo = dbo.Items.MarkNo
                       GROUP BY dbo.Equipment.MarkNo, dbo.Equipment.QtyOrdered) AS Sub
WHERE     (ItemDifference > 1)
It gives me all the Mark No in items table which have Qty Ordered in Equipment (Parent Table) more than item count
What I want to do is to delete any access
Inother words if Count of Items is more than Qty Ordered in Equipment table then delete the excess or differnce from the items table basically to make Qty Ordered in Equipment table <= count of Items table for that Mark No
saleemzAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

chapmandewCommented:
I would love to help you, but I am not 100% sure I understand what you are asking.  Is it possible for you to give me a data example for what you need?  I will work you through this.

Tim
0
Brian CroweDatabase AdministratorCommented:
It seems to me that this issue should be handled at the application level or at the very least in a InsertItems stored procedure.  How are these inserts being made?
0
saleemzAuthor Commented:
Thanks BriCrowe I am working on sorting this issue out in the application. But the items are already inserted,i want to clean up the data before i install my new release of the application which has this issue fixed.
0
The Ultimate Tool Kit for Technolgy Solution Provi

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy for valuable how-to assets including sample agreements, checklists, flowcharts, and more!

David ToddSenior DBACommented:
Hi,

As Tim asked, can we see some sample data - raw input, and either what you want left or what you want deleted. I'd like structure or defiition or both tables as well please.

Cheers
  David
0
saleemzAuthor Commented:
Thanks David how do you want me to post it here. Whats the best way can i run a query or a function to do that
0
David ToddSenior DBACommented:
Hi,

Posting:
Attach the query and data as a code snippet.

Data:
select top 20 *
from dbo.Equipment

select top 20 *
from dbo.Items

Structure:
execute sp_help equipment

execute sp_help items

You may need to hand edit these results so they match

Cheers
  David
0
saleemzAuthor Commented:
Here is the Data I will put the structure in the next post to make it easier to read

MarkNo                         FAB         ShortDescription     Description                                                                                                                                                                                                                                                     Category    UOM  UOMValue                                Rev         Length      DrawingNo                      Weight      QtyOrdered  BuildingLocation AreaLocation FacilityLocation RequiredOnSiteDate      HazardCategory Code                                               AuditUser  AuditDateTime
------------------------------ ----------- -------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------- ---- --------------------------------------- ----------- ----------- ------------------------------ ----------- ----------- ---------------- ------------ ---------------- ----------------------- -------------- -------------------------------------------------- ---------- -----------------------
C1100                          3           FLATBAR FITTING      NULL                                                                                                                                                                                                                                                            1           EA   1.00                                    NULL        NULL        NULL                           1           22          7                101          NULL             NULL                    98                                                                Casey      2007-09-22 15:24:40.720
CB300                          99          PIPE DUCTING         N/A                                                                                                                                                                                                                                                             3           NULL 1.00                                    NULL        3500        NULL                           70          1           1                2            NULL             NULL                    101            NULL                                               NULL       NULL
CB300-00-D0061                 2           FITTING              FITTING                                                                                                                                                                                                                                                         1           EA   1.00                                    NULL        NULL        NULL                           32          16          1                101          NULL             NULL                    98                                                                Casey      2007-10-19 07:40:04.933
CB300-00-D1126                 2           FITTING              FITTING                                                                                                                                                                                                                                                         1           EA   1.00                                    NULL        NULL        NULL                           4           2           1                101          NULL             NULL                    98                                                                Casey      2007-10-19 07:40:41.137
CB300-00-D1167                 2           FITTING              FITTING                                                                                                                                                                                                                                                         1           EA   1.00                                    NULL        NULL        NULL                           2           1           1                101          NULL             NULL                    98                                                                Casey      2007-10-19 07:40:58.120
CB300-00-D1173                 2           FITTING              FITTING                                                                                                                                                                                                                                                         1           EA   1.00                                    NULL        NULL        NULL                           2           1           1                101          NULL             NULL                    98                                                                Casey      2007-10-19 07:41:20.993
CB300-00-D1589                 2           FITTING              FITTING                                                                                                                                                                                                                                                         1           EA   1.00                                    NULL        0           NULL                           2           1           1                101          NULL             NULL                    98                                                                Casey      2007-10-19 07:41:41.353
CB300-00-D1638                 2           FITTING              FITTING                                                                                                                                                                                                                                                         1           EA   1.00                                    NULL        NULL        NULL                           2           1           1                101          NULL             NULL                    98                                                                Casey      2007-10-19 07:42:21.900
CB300-00-D1645                 2           FITTING              FITTING                                                                                                                                                                                                                                                         1           EA   1.00                                    NULL        NULL        NULL                           32          16          1                101          NULL             NULL                    98                                                                Casey      2007-10-19 07:42:38.760
CB300-00-D1647                 2           FITTING              FITTING                                                                                                                                                                                                                                                         1           EA   1.00                                    NULL        NULL        NULL                           42          21          1                101          NULL             NULL                    98                                                                Casey      2007-10-19 07:42:59.010
CB300-01-0100                  2           BEAM                 beam                                                                                                                                                                                                                                                            1           MT   0.29                                    0           3075        CB300-01-0100                  293         1           1                101          1                NULL                    98             DAAB                                               ZZ-Update1 2007-09-29 12:22:13.280
CB300-01-0101                  2           ANGLE                ANGLE                                                                                                                                                                                                                                                           1           MT   0.08                                    1           1050        CB300-01-0101                  88          8           1                101          1                NULL                    98             DAAA                                               ZZ-Update1 2007-11-27 16:50:56.523
CB300-01-0102                  2           COLUMN               Column                                                                                                                                                                                                                                                          1           MT   0.12                                    0           1500        CB300-01-0102                  121         8           1                101          1                NULL                    98             DAAA                                               ZZ-Update1 2007-09-29 12:22:15.733
CB300-01-0103                  2           COLUMN               Column                                                                                                                                                                                                                                                          1           MT   0.14                                    0           1500        CB300-01-0103                  140         8           1                101          1                NULL                    98             DAAA                                               ZZ-Update1 2007-09-29 12:22:15.797
CB300-01-0104                  2           BEAM                 beam                                                                                                                                                                                                                                                            1           MT   0.29                                    0           2990        CB300-01-0104                  290         5           1                101          1                NULL                    98             DAAB                                               ZZ-Update1 2007-09-29 12:22:15.843
CB300-01-0105                  2           BEAM                 beam                                                                                                                                                                                                                                                            1           MT   0.30                                    0           2990        CB300-01-0105                  303         1           1                101          1                NULL                    98             DAAB                                               ZZ-Update1 2007-09-29 12:22:15.877
CB300-01-0106                  2           BEAM                 beam                                                                                                                                                                                                                                                            1           MT   0.30                                    0           3340        CB300-01-0106                  305         1           1                101          1                NULL                    98             DAAB                                               ZZ-Update1 2007-09-29 12:22:15.923
CB300-01-0107                  2           BEAM                 beam                                                                                                                                                                                                                                                            1           MT   0.29                                    0           2990        CB300-01-0107                  290         1           1                101          1                NULL                    98             DAAB                                               ZZ-Update1 2007-09-29 12:22:15.970
CB300-01-0108                  2           BEAM                 beam                                                                                                                                                                                                                                                            1           MT   0.29                                    0           2990        CB300-01-0108                  291         1           1                101          1                NULL                    98             DAAB                                               ZZ-Update1 2007-09-29 12:22:16.017
CB300-01-0109                  2           STAIR                Stair                                                                                                                                                                                                                                                           1           MT   0.32                                    0           1349        CB300-01-0109                  326         1           1                101          1                NULL                    98             DAAB                                               ZZ-Update1 2007-09-29 12:22:16.047

(20 row(s) affected)

ItemBarcode                             MarkNo                         StorageLocation DocketNo                                           PackingListNo        ConsignmentNo        CompletionStatus RequestedBy RequestDate             ReceivedBy ReceivedDate            IssuedDate              IssuedBy   InstalledDate           InstalledBy                                        GRL                                                GPSLat                                             GPSLong                                            WBS                                                WorkPack    CompletionDate          MRF                            AuditUser  AuditDateTime
--------------------------------------- ------------------------------ --------------- -------------------------------------------------- -------------------- -------------------- ---------------- ----------- ----------------------- ---------- ----------------------- ----------------------- ---------- ----------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----------- ----------------------- ------------------------------ ---------- -----------------------
7278054                                 CB300-01-0100                  NULL            NULL                                               NULL                 NULL                 0                Owen        2007-07-31 00:00:00.000 Stuart     2007-05-13 00:00:00.000 2007-07-11 00:00:00.000 Stuart     2007-08-02 00:00:00.000 Owen                                               Crushing Building                                  NULL                                               NULL                                               NULL                                               NULL        NULL                    NULL                           NULL       NULL
7278055                                 CB300-01-0101                  NULL            NULL                                               NULL                 NULL                 0                Owen        2007-08-19 00:00:00.000 Stuart     2007-08-17 17:06:33.143 2007-08-20 00:00:00.000 Stuart     2007-08-21 00:00:00.000 Owen                                               Crushing Building                                  NULL                                               NULL                                               NULL                                               NULL        NULL                    NULL                           Ralph      2007-08-22 15:19:03.483
7278056                                 CB300-01-0101                  NULL            NULL                                               NULL                 NULL                 NULL             Owen        2007-08-19 16:37:22.000 Stuart     2007-08-17 17:06:34.287 2007-09-03 14:39:09.303 Stuart     2007-10-24 11:57:24.000 Owen                                               Crushing Building                                  NULL                                               NULL                                               NULL                                               NULL        NULL                    NULL                           Z - C45    2007-11-01 12:03:17.350
7278057                                 CB300-01-0101                  NULL            NULL                                               NULL                 NULL                 NULL             Owen        2007-08-19 16:37:22.000 Stuart     2007-08-17 17:06:35.300 2007-09-03 14:39:09.303 Stuart     2007-10-24 11:57:24.000 Owen                                               Crushing Building                                  NULL                                               NULL                                               NULL                                               NULL        NULL                    NULL                           Z - C45    2007-11-01 12:03:23.227
7278058                                 CB300-01-0101                  NULL            NULL                                               NULL                 NULL                 NULL             Owen        2007-08-19 16:37:22.000 Stuart     2007-08-17 17:06:36.270 2007-09-03 14:39:09.303 Stuart     2007-10-24 11:57:24.000 Owen                                               Crushing Building                                  NULL                                               NULL                                               NULL                                               NULL        NULL                    NULL                           Z - C45    2007-11-01 12:03:19.257
7278059                                 CB300-01-0101                  NULL            NULL                                               NULL                 NULL                 NULL             Owen        2007-08-19 16:37:22.000 Stuart     2007-08-17 17:06:37.143 2007-09-03 14:39:09.303 Stuart     2007-10-24 11:57:24.000 Owen                                               Crushing Building                                  NULL                                               NULL                                               NULL                                               NULL        NULL                    NULL                           Z - C45    2007-11-01 12:03:25.697
7278060                                 CB300-01-0101                  NULL            NULL                                               NULL                 NULL                 NULL             Owen        2007-08-19 16:37:22.000 Stuart     2007-08-17 17:06:38.037 2007-09-03 14:39:09.303 Stuart     2007-10-24 11:57:24.000 Owen                                               Crushing Building                                  NULL                                               NULL                                               NULL                                               NULL        NULL                    NULL                           Z - C45    2007-11-01 12:03:28.600
7278061                                 CB300-01-0101                  NULL            NULL                                               NULL                 NULL                 NULL             Owen        2007-08-19 16:37:22.000 Stuart     2007-08-17 17:06:38.910 2007-09-03 14:39:09.303 Stuart     2007-10-24 11:57:24.000 Owen                                               Crushing Building                                  NULL                                               NULL                                               NULL                                               NULL        NULL                    NULL                           Z - C45    2007-11-01 12:03:32.133
7278062                                 CB300-01-0101                  NULL            NULL                                               NULL                 NULL                 NULL             Owen        2007-08-19 16:37:22.000 Stuart     2007-08-17 17:06:39.800 2007-09-03 14:39:09.303 Stuart     2007-10-24 11:57:24.000 Owen                                               Crushing Building                                  NULL                                               NULL                                               NULL                                               NULL        NULL                    NULL                           Z - C45    2007-11-01 12:03:35.320
7278063                                 CB300-01-0102                  NULL            NULL                                               NULL                 NULL                 0                Owen        2007-07-21 00:00:00.000 NULL       2007-05-13 00:00:00.000 2007-07-27 00:00:00.000 NULL       2007-10-24 11:57:24.000 Owen                                               Crushing Building                                  NULL                                               NULL                                               NULL                                               NULL        NULL                    NULL                           Z - C45    2007-11-01 12:04:10.523
7278064                                 CB300-01-0102                  NULL            NULL                                               NULL                 NULL                 0                Owen        2007-07-21 00:00:00.000 NULL       2007-05-13 00:00:00.000 2007-07-25 00:00:00.000 NULL       2007-10-24 11:57:24.000 Owen                                               Crushing Building                                  NULL                                               NULL                                               NULL                                               NULL        NULL                    NULL                           Z - C45    2007-11-01 12:04:12.523
7278065                                 CB300-01-0102                  NULL            NULL                                               NULL                 NULL                 0                Owen        2007-08-21 00:00:00.000 NULL       2007-05-13 00:00:00.000 2007-07-25 00:00:00.000 NULL       2007-10-24 11:57:24.000 Owen                                               Crushing Building                                  NULL                                               NULL                                               NULL                                               NULL        NULL                    NULL                           Z - C45    2007-11-01 12:04:14.803
7278066                                 CB300-01-0102                  NULL            NULL                                               NULL                 NULL                 0                Owen        2007-07-21 00:00:00.000 NULL       2007-05-13 00:00:00.000 2007-07-25 00:00:00.000 NULL       2007-10-24 11:57:24.000 Owen                                               Crushing Building                                  NULL                                               NULL                                               NULL                                               NULL        NULL                    NULL                           Z - C45    2007-11-01 12:04:17.900
7278067                                 CB300-01-0102                  NULL            NULL                                               NULL                 NULL                 0                Owen        2007-07-21 00:00:00.000 NULL       2007-05-13 00:00:00.000 2007-07-25 00:00:00.000 NULL       2007-10-24 11:57:24.000 Owen                                               Crushing Building                                  NULL                                               NULL                                               NULL                                               NULL        NULL                    NULL                           Z - C45    2007-11-01 12:04:22.553
7278068                                 CB300-01-0102                  NULL            NULL                                               NULL                 NULL                 0                Owen        2007-07-21 00:00:00.000 NULL       2007-05-13 00:00:00.000 2007-07-25 00:00:00.000 NULL       2007-10-24 11:57:24.000 Owen                                               Crushing Building                                  NULL                                               NULL                                               NULL                                               NULL        NULL                    NULL                           Z - C45    2007-11-01 12:04:24.350
7278069                                 CB300-01-0102                  NULL            NULL                                               NULL                 NULL                 0                Owen        2007-07-21 00:00:00.000 NULL       2007-05-13 00:00:00.000 2007-07-25 00:00:00.000 NULL       2007-10-24 11:57:24.000 Owen                                               Crushing Building                                  NULL                                               NULL                                               NULL                                               NULL        NULL                    NULL                           Z - C45    2007-11-01 12:04:26.367
7278070                                 CB300-01-0102                  NULL            NULL                                               NULL                 NULL                 0                Owen        2007-07-21 00:00:00.000 NULL       2007-05-13 00:00:00.000 2007-07-25 00:00:00.000 NULL       2007-10-24 11:57:24.000 Owen                                               Crushing Building                                  NULL                                               NULL                                               NULL                                               NULL        NULL                    NULL                           Z - C45    2007-11-01 12:04:29.523
7278071                                 CB300-01-0103                  NULL            NULL                                               NULL                 NULL                 0                Owen        2007-07-21 00:00:00.000 NULL       2007-05-13 00:00:00.000 2007-07-25 00:00:00.000 NULL       2007-10-24 11:57:24.000 Owen                                               Crushing Building                                  NULL                                               NULL                                               NULL                                               NULL        NULL                    NULL                           Z - C45    2007-11-01 12:04:59.350
7278072                                 CB300-01-0103                  NULL            NULL                                               NULL                 NULL                 0                Owen        2007-07-21 00:00:00.000 NULL       2007-05-13 00:00:00.000 2007-07-25 00:00:00.000 NULL       2007-10-24 11:57:24.000 Owen                                               Crushing Building                                  NULL                                               NULL                                               NULL                                               NULL        NULL                    NULL                           Z - C45    2007-11-01 12:05:01.290
7278073                                 CB300-01-0103                  NULL            NULL                                               NULL                 NULL                 0                Owen        2007-07-21 00:00:00.000 NULL       2007-05-13 00:00:00.000 2007-07-25 00:00:00.000 NULL       2007-10-24 11:57:24.000 Owen                                               Crushing Building                                  NULL                                               NULL                                               NULL                                               NULL        NULL                    NULL                           Z - C45    2007-11-01 12:05:06.117

(20 row(s) affected)



0
saleemzAuthor Commented:
the above look shocking - sorry guys I will post it again
0
saleemzAuthor Commented:
Please see attached excel for data

DB-Sample-data-for-Equip-and-Ite.xls
0
saleemzAuthor Commented:
please see attache table definition
Please make sure to turn of word wrap if using notepad makes it easier to read

DB-Definitiopn-for-Equ-and-Item-.txt
0
David ToddSenior DBACommented:
Hi,

Snippet illustrates solution.

I added a few rows (9) to Items for MarkNo 'CB300-01-0103', as your example didn't have any items that would fail the test of having more rows than quantity ordered.

HTH
  David

use tempdb
go
 
if object_id( N'tempdb..#Equip', N'U' ) is not null 
	drop table #Equip;
	
create table #Equip 
	(
	MarkNo varchar( 20 )
	, QtyOrdered int
	)
	
insert #Equip( MarkNo, QtyOrdered )
select 'CB300-01-0100', 1
union all select 'CB300-01-0101', 8
union all select 'CB300-01-0102', 8
union all select 'CB300-01-0103', 8
union all select 'CB300-01-0104', 5
 
select *
from #Equip
 
if object_id( N'tempdb..#Items', N'U' ) is not null 
	drop table #Items;
	
create table #Items 
	(
	ItemBarcode int
	, MarkNo varchar( 20 )
	)
	
insert #Items( ItemBarcode, MarkNo )
select 7278054, 'CB300-01-0100'
union all select 7278055, 'CB300-01-0101'
union all select 7278056, 'CB300-01-0101'
union all select 7278057, 'CB300-01-0101'
union all select 7278058, 'CB300-01-0101'
union all select 7278059, 'CB300-01-0101'
union all select 7278060, 'CB300-01-0101'
union all select 7278061, 'CB300-01-0101'
union all select 7278062, 'CB300-01-0101'
union all select 7278063, 'CB300-01-0102'
union all select 7278064, 'CB300-01-0102'
union all select 7278065, 'CB300-01-0102'
union all select 7278066, 'CB300-01-0102'
union all select 7278067, 'CB300-01-0102'
union all select 7278068, 'CB300-01-0102'
union all select 7278069, 'CB300-01-0102'
union all select 7278070, 'CB300-01-0102'
union all select 7278071, 'CB300-01-0103'
union all select 7278072, 'CB300-01-0103'
union all select 7278073, 'CB300-01-0103'
union all select 7278074, 'CB300-01-0103'
union all select 7278075, 'CB300-01-0103'
union all select 7278076, 'CB300-01-0103'
union all select 7278077, 'CB300-01-0103'
union all select 7278078, 'CB300-01-0103'
union all select 7278079, 'CB300-01-0103'
union all select 7278080, 'CB300-01-0103'
union all select 7278081, 'CB300-01-0103'
union all select 7278082, 'CB300-01-0103'
 
select *
from #Items
 
print 'Solution starts here'
 
select 
	i.MarkNo
	, count( * )
from #Items i
group by 
	i.MarkNo
	
-- select showing the rows we have, plus a row number
select 
	i.MarkNo
	, i.ItemBarcode
	, (
	select count( * )
	from #Items ii
	where 
		ii.MarkNo = i.MarkNo
		and ii.ItemBarcode < i.ItemBarcode
	)
from #Items i
 
-- select showing the rows we don't want
select 
	ij.MarkNo
	, ij.ItemBarcode
from #Equip e
left outer join 
	(
	select 
		i.MarkNo
		, i.ItemBarcode
		, (
		select count( * )
		from #Items ii
		where 
			ii.MarkNo = i.MarkNo
			and ii.ItemBarcode < i.ItemBarcode
		) c
	from #Items i
	) ij
	on ij.MarkNo = e.MarkNo
where ij.c >= e.QtyOrdered
 

Open in new window

0
saleemzAuthor Commented:
Thanks David
it works fine.
Can I remove them from one table and put them in one temp table
0
David ToddSenior DBACommented:
Hi,

Code below ...

Cheers
  David
-- select showing the rows we don't want
select 
	ij.MarkNo
	, ij.ItemBarcode
from #Equip e
left outer join 
	(
	select 
		i.MarkNo
		, i.ItemBarcode
		, (
		select count( * )
		from #Items ii
		where 
			ii.MarkNo = i.MarkNo
			and ii.ItemBarcode < i.ItemBarcode
		) c
	from #Items i
	) ij
	on ij.MarkNo = e.MarkNo
where ij.c >= e.QtyOrdered
 
-- select showing the rows we don't want, 
-- selecting them into another temp table ... 
-- note that table must not already exist etc.
if object_id( N'tempdb..#SomeOtherTable', N'U' ) is not null 
	drop table #SomeOtherTable;
	
select 
	ij.MarkNo
	, ij.ItemBarcode
into #SomeOtherTable
from #Equip e
left outer join 
	(
	select 
		i.MarkNo
		, i.ItemBarcode
		, (
		select count( * )
		from #Items ii
		where 
			ii.MarkNo = i.MarkNo
			and ii.ItemBarcode < i.ItemBarcode
		) c
	from #Items i
	) ij
	on ij.MarkNo = e.MarkNo
where ij.c >= e.QtyOrdered
 
-- select showing the rows we don't want
-- changed to delete
-- test first
-- delete the rows we don't want
delete iii
from #Items iii
where 
	iii.ItemBarcode in
	(
	select 
		ij.ItemBarcode
	from #Equip e
	left outer join 
		(
		select 
			i.MarkNo
			, i.ItemBarcode
			, (
			select count( * )
			from #Items ii
			where 
				ii.MarkNo = i.MarkNo
				and ii.ItemBarcode < i.ItemBarcode
			) c
		from #Items i
		) ij
		on ij.MarkNo = e.MarkNo
	where ij.c >= e.QtyOrdered
	)

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
saleemzAuthor Commented:
David you have equipment table marked as #Equip and items table as #items
is there a reason you put #.

Thanks for your help
0
David ToddSenior DBACommented:
Hi,

>> the hash (#) sign in table names

The reason is that they are temp tables, and will be deleted when the connection ends. (The Hash indicates a temp table, the double hash indicates a global temp table.)

That is, I've written a script that will be safe to experiement with on a test system (ie mine) without needed a lot of clean-up afterwards.

I've also picked up the habit of doing all the above in tempdb, and so a restart of SQL will clean things up as well.

For deployment, you'll need to change the names as appropriate.

Cheers
  David
0
saleemzAuthor Commented:
Hello Dtodd (David)

I need a little adjustment in your solution will you be able to help

Compare Qty Ordered in Equipment table with Count of items in Items Table where Area Location is 102
I have set Area location to 102 where I have imported the files from CSV files I only need to compare these items

If Qty Ordered in Equipment table >= Count of items in Items Table then Do nothing
If Qty Ordered in Equipment table < Count of items in Items Table then update the Consignment No in items table to Extra item-Please Delete

This way I can generate a query and delete these items by myself.
Thanks
0
David ToddSenior DBACommented:
Hi,

I'm a little unclear as to what you are asking.

1.
I can't find an AreaLocation field in your items data - there is a StorageLocation. OTH there is a AreaLocation in the Eqiupment data.

2.
If the Area location is 102 - set when you import from CSV files, then are all rows set with Area location = 102? So what has changed/what is different?

3.
update Consignment No to 'Extra item - Please Delete'

See snippet

4.
This should have been in another question

Cheers
  David
use tempdb
go
 
if object_id( N'tempdb..#Equip', N'U' ) is not null 
	drop table #Equip;
	
create table #Equip 
	(
	MarkNo varchar( 20 )
	, QtyOrdered int
	)
	
insert #Equip( MarkNo, QtyOrdered )
select 'CB300-01-0100', 1
union all select 'CB300-01-0101', 8
union all select 'CB300-01-0102', 8
union all select 'CB300-01-0103', 8
union all select 'CB300-01-0104', 5
 
select *
from #Equip
 
if object_id( N'tempdb..#Items', N'U' ) is not null 
	drop table #Items;
	
create table #Items 
	(
	ItemBarcode int
	, MarkNo varchar( 20 )
	, ConsignmentNo varchar( 30 )
	)
	
insert #Items( ItemBarcode, MarkNo, ConsignmentNo )
select 7278054, 'CB300-01-0100', '0'
union all select 7278055, 'CB300-01-0101', '0'
union all select 7278056, 'CB300-01-0101', '0'
union all select 7278057, 'CB300-01-0101', '0'
union all select 7278058, 'CB300-01-0101', null
union all select 7278059, 'CB300-01-0101', null
union all select 7278060, 'CB300-01-0101', null
union all select 7278061, 'CB300-01-0101', null
union all select 7278062, 'CB300-01-0101', null
union all select 7278063, 'CB300-01-0102', null
union all select 7278064, 'CB300-01-0102', null
union all select 7278065, 'CB300-01-0102', '0'
union all select 7278066, 'CB300-01-0102', '0'
union all select 7278067, 'CB300-01-0102', '0'
union all select 7278068, 'CB300-01-0102', '1'
union all select 7278069, 'CB300-01-0102', '1'
union all select 7278070, 'CB300-01-0102', '1'
union all select 7278071, 'CB300-01-0103', '1'
union all select 7278072, 'CB300-01-0103', '1'
union all select 7278073, 'CB300-01-0103', '2'
union all select 7278074, 'CB300-01-0103', '2'
union all select 7278075, 'CB300-01-0103', '2'
union all select 7278076, 'CB300-01-0103', '2'
union all select 7278077, 'CB300-01-0103', '3'
union all select 7278078, 'CB300-01-0103', '3'
union all select 7278079, 'CB300-01-0103', '3'
union all select 7278080, 'CB300-01-0103', '3'
union all select 7278081, 'CB300-01-0103', '3'
union all select 7278082, 'CB300-01-0103', '3'
 
select *
from #Items
 
print 'Solution starts here'
 
-- select showing the rows we don't want
select 
	ij.MarkNo
	, ij.ItemBarcode
from #Equip e
left outer join 
	(
	select 
		i.MarkNo
		, i.ItemBarcode
		, (
		select count( * )
		from #Items ii
		where 
			ii.MarkNo = i.MarkNo
			and ii.ItemBarcode < i.ItemBarcode
		) c
	from #Items i
	) ij
	on ij.MarkNo = e.MarkNo
where ij.c >= e.QtyOrdered
 
-- update
update ik
set ik.ConsignmentNo = 'Extra Item - Please Delete'
from #Equip e
left outer join 
	(
	select 
		i.MarkNo
		, i.ItemBarcode
		, (
		select count( * )
		from #Items ii
		where 
			ii.MarkNo = i.MarkNo
			and ii.ItemBarcode < i.ItemBarcode
		) c
	from #Items i
	) ij
	on ij.MarkNo = e.MarkNo
inner join #Items ik
	on ik.MarkNo = ij.MarkNo
	and ik.ItemBarcode = ij.ItemBarcode
where ij.c >= e.QtyOrdered
 
select *
from #Items

Open in new window

0
saleemzAuthor Commented:
David I will submit this as a seperate question now
0
David ToddSenior DBACommented:
Hi,

Cool.

Can you add a note here when you have submitted it, maybe add a link as well?

Cheers
  David
0
saleemzAuthor Commented:
done now
question title "Need to update a field in a child table in SQL by comoaring the field in parent table and count of child table"
http://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/Q_23172681.html
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft SQL Server

From novice to tech pro — start learning today.