Solved

How to insert into a derived table, & then select from the final result with Joins.  Beginner level.

Posted on 2013-06-16
12
327 Views
Last Modified: 2013-06-18
Hello, I'm trying to add data to a derived table and being new to MS SQL am confused by the correct syntax.  Also my google searches are returning 0 results, so I'm not sure if I'm allowed to do what i'm attempting, though I can't see why not.  The 2nd stage of this query is to then requery tblSupplierData for additional fields.

INSERT INTO derivedtbl_1 (fldSupplierId, fldItemCode)
SELECT (fldSupplierId, (fldItemCode)
FROM tblSupplierData
WHERE (fldSupplierId = @supplierID) AND (fldIssueSequenceNumber = @sequenceNo)

(SELECT        fldSupplierId, fldItemCode
FROM            tblSubscriptionSales
WHERE        (fldSupplierId = @supplierID) AND (fldSubscriptionId = @subscriptionId) AND (fldCustomerId = @customerID)) As derivedtbl_1
0
Comment
Question by:StuBabyAight
  • 6
  • 5
12 Comments
 

Author Comment

by:StuBabyAight
ID: 39251929
Sorry, I have to go out for two hours and cannot attempt any expert suggestions until I return.
0
 
LVL 48

Expert Comment

by:PortletPaul
ID: 39251935
oops, a mistake - sorry
0
 
LVL 48

Expert Comment

by:PortletPaul
ID: 39251946
but as I'm here this page discusses the topic:
http://www.blackwasp.co.uk/SQLSelectInsert.aspx
0
 
LVL 48

Accepted Solution

by:
PortletPaul earned 250 total points
ID: 39251956
and this should work I believe- with a union all
SELECT
      fldSupplierId
    , fldItemCode
INTO derivedtbl_1
FROM tblSupplierData
WHERE (fldSupplierId = @supplierID)
    AND (fldIssueSequenceNumber = @sequenceNo)

UNION ALL

SELECT
      fldSupplierId
    , fldItemCode
FROM tblSubscriptionSales
WHERE (fldSupplierId = @supplierID)
    AND (fldSubscriptionId = @subscriptionId)
    AND (fldCustomerId = @customerID)

Open in new window

0
 

Author Comment

by:StuBabyAight
ID: 39252180
I get a "Must declare the scalar variable "@supplierID" message when I try this.  Any suggestions?

(Oh, and this is after adding ( )) as derivedtbl_1 to the end of the second SELECT.  Though the same error appears without as per your original statement.
0
Control application downtime with dependency maps

Visualize the interdependencies between application components better with Applications Manager's automated application discovery and dependency mapping feature. Resolve performance issues faster by quickly isolating problematic components.

 
LVL 48

Expert Comment

by:PortletPaul
ID: 39252231
there is the presumption that (as you proposed them) that you would still be declaring and using the variables...

declare @supplierID int
declare @sequenceNo int --<< maybe, I don't know what ata type it is
declare@customerID int
declare@subscriptionId int

set @supplierID = 100 --<< whatever values makes sense, do this for each variable
...

then run the query

>>after adding ( ))
??

you have a tendency toward overuse of parentheses :)
none of the parentheses that survived into my comment above are actually required
0
 

Author Comment

by:StuBabyAight
ID: 39252235
I'm a beginner to this, so while the answer here didn't work, it sent me down the right path which was exploring the "UNION ALL" command enabling me to solve the problem.
0
 

Author Comment

by:StuBabyAight
ID: 39252295
PortletPaul, thank you for your time on this question.  I am well aware that as a beginner I will be prone to asking and formatting questions in a manner that may come across as counter-intuitive as I get my head around these building blocks.  I really appreciate your input.
0
 
LVL 48

Expert Comment

by:PortletPaul
ID: 39252351
no problem, you are welcome to keep the question open to arrive at a better result (& this would would be better for me than a C grade :(

please keep in mind that
UNION ALL

has an important difference to
UNION

(without the word 'ALL' a UNION will remove duplicate rows and because of this consumes more processing effort) e.g. see:
http://blog.sqlauthority.com/2009/03/11/sql-server-difference-between-union-vs-union-all-optimal-performance-comparison/

there are times when UNION makes sense, and there are times when UNION ALL is approriate - just be aware of the differences.
0
 

Author Comment

by:StuBabyAight
ID: 39252396
Oh no, sorry about the C, how can I change it?  I'm back after three years and not familiar with the points allocation system.  The extra knowledge about UNION processing certainly warrants an upgrade.
0
 
LVL 48

Expert Comment

by:PortletPaul
ID: 39252409
cheers, you may request attention and ask to re-open the question.
0

Featured Post

NAS Cloud Backup Strategies

This article explains backup scenarios when using network storage. We review the so-called “3-2-1 strategy” and summarize the methods you can use to send NAS data to the cloud

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article explains how to reset the password of the sa account on a Microsoft SQL Server.  The steps in this article work in SQL 2005, 2008, 2008 R2, 2012, 2014 and 2016.
This article shows gives you an overview on SQL Server 2016 row level security. You will also get to know the usages of row-level-security and how it works
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.
Via a live example, show how to setup several different housekeeping processes for a SQL Server.

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now