Go Premium for a chance to win a PS4. Enter to Win

x
Solved

# special join between 3 tables

Posted on 2007-12-05
Medium Priority
235 Views
I need a query to find an totals for items and writeins for each company.  I have an Order table, an Orderdetails table, and a OrderWritein table.  Both OrderDetails and OrderWriteIns have a Price and Quantiy column.  I wrote this with joins as follows:
Select C.CompanyName,sum(D.price*D.Quantity) itmAmt,sum (W.price*W.Quantity) wiAmt,max(O.OrderDate) [Last Order]
From tblOrders O
Inner Join tblCompany C on O.companyid = C.companyid
Inner Join tblOrdersDetail D on O.orderid=D.orderid
Inner Join tblOrdersWriteIns W on O.orderid=W.orderid
group by C.companyName

The problem is when I join the write in table it does a cross join.  if I have 10 items and 10 writeIns then the sum is for the 100 rows.  How do I write the query so each company has the correct sum for both itemsDetail and writeIns?
0
Question by:moraleskp
• 4

LVL 25

Expert Comment

ID: 20416613
Select C.CompanyName,
(select sum(D.price*D.Quantity) from tblOrdersDetail D where O.orderid=D.orderid) itmAmt,
(select sum (W.price*W.Quantity) from tblOrdersWriteIns W where O.orderid=W.orderid) wiAmt,
max(O.OrderDate) [Last Order]
From tblOrders O
Inner Join tblCompany C on O.companyid = C.companyid
group by C.companyName
0

LVL 25

Accepted Solution

imitchie earned 375 total points
ID: 20416624
this will work better..
``````Select OC.CompanyName,
(select sum(D.price*D.Quantity) from tblOrdersDetail D where OC.orderid=D.orderid) itmAmt,
(select sum (W.price*W.Quantity) from tblOrdersWriteIns W where OC.orderid=W.orderid) wiAmt,
OC.[Last Order]
From (
select C.CompanyName, max(O.OrderDate) [Last Order]
FROM tblOrders O
Inner Join tblCompany C on O.companyid = C.companyid
group by C.companyName
) OC
``````
0

Author Comment

ID: 20417054
imitchie,
Thanks for responding.
on the first response I got an error saying orderid was not in the group by clause.
In the second response got an error that orderId is an invalid column.  I guess because it is not selected in the sub query.
Your responses gave me some ideas so I tried the following code.  It seems to work.

``````
select companyName,sum(itmAmt),sum(wiAmt),max(Orderdate)
from
(Select O.orderid,C.CompanyName,
(select sum(D.PriceSold*D.qty) from tblOrdersDetail D where O.orderid=D.orderid)itmAmt,
(select sum(W.RetailPrice*W.Qty) from tblOrders_Writeins W where O.orderid=W.orderid) wiAmt,
O.orderdate
from tblOrders O
inner join tblCompany C on O.companyid=C.companyid
Group by C.companyName,O.orderid,O.orderdate
) query
group by companyName
Order by CompanyName
``````
0

LVL 25

Expert Comment

ID: 20417073
You are right. Good on you to find a solution! This would probably have worked, and does less work

Select OC.CompanyName,
(select sum(D.price*D.Quantity) from tblOrdersDetail D where OC.orderid=D.orderid) itmAmt,
(select sum (W.price*W.Quantity) from tblOrdersWriteIns W where OC.orderid=W.orderid) wiAmt,
OC.[Last Order]
From (
select O.OrderID, C.CompanyName, max(O.OrderDate) [Last Order]
FROM tblOrders O
Inner Join tblCompany C on O.companyid = C.companyid
group by C.companyName
) OC
0

LVL 25

Expert Comment

ID: 20417077
nvm, orderid is not in the group by..
0

## Featured Post

Question has a verified solution.

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

In this article I will describe the Backup & Restore method as one possible migration process and I will add the extra tasks needed for an upgrade when and where is applied so it will cover all.
This post looks at MongoDB and MySQL, and covers high-level MongoDB strengths, weaknesses, features, and uses from the perspective of an SQL user.
Are you ready to place your question in front of subject-matter experts for more timely responses? With the release of Priority Question, Premium Members, Team Accounts and Qualified Experts can now identify the emergent level of their issue, signalâ€¦
Despite its rising prevalence in the business world, "the cloud" is still misunderstood. Some companies still believe common misconceptions about lack of security in cloud solutions and many misuses of cloud storage options still occur every day. â€¦
###### Suggested Courses
Course of the Month6 days, 9 hours left to enroll