Quantcast
Channel: Forum Getting started with SQL Server
Viewing all articles
Browse latest Browse all 4729

SQL: how to make a quick query?

$
0
0

There are three tables

CreateTableInputItems(ItemIDintPrimary key,Name nvarchar(250))

InsertintoInputItems values(1,'Raw1')
InsertintoInputItems values(2,'Raw2')
InsertintoInputItems values(3,'Raw3')

select*fromInputItems

CreateTableTestItems(ItemNumberintPrimary key,ItemName nvarchar(250),ItemIDint)

InsertintoTestItems values(111,'Test1',1)
InsertintoTestItems values(112,'Test2',2)
InsertintoTestItems values(113,'Test3',3)
InsertintoTestItems values(114,'Raw1',1)
InsertintoTestItems values(115,'Raw2',2)
InsertintoTestItems values(116,'Raw',3)

select*fromTestItems

CreateTableResultItems(ItemNumberintPrimary key,Name nvarchar(250))
select*fromResultItems

We want to base on InputItems table and query on TestItems table and insert query results into ResultItems table

If both InputItems.ItemID = TestItems.ItemID and InputItems.Name = TestItems.ItemName, return TestItems.ItemNumber, InputItems.Name.

If InputItems.ItemID = TestItems.ItemID and InputItems.Name <> TestItems.ItemName, return smallest TestItems.ItemNumer, InputItems.Name.

Results should be

(114,'Raw1',1)
(115,'Raw2',2)

(113,'Raw3',3)

solution1:

1) Insert into ResultItems

select t.ItemNumber, t.Name

from InputItems i inner join TestItems t

where i.ItemID = t.ItemID

2) Declare @Temp table (ItemID int primary key)

Insert into @Temp

select t.ItemID

from InputItems I inner join TestItmes t

where i.ItemID = t.ItemID and having count(t.ItemID) > 1

3) if @Temp table is not empty, using cursor to get each ItemID and query.

We wonder if there is simply way that do not need to use cursor. Thx!




JaneC


Viewing all articles
Browse latest Browse all 4729

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>