Home > Software design >  SQL SUM up specific rows without subquery returning more than one row
SQL SUM up specific rows without subquery returning more than one row

Time:06-16

There are a few posts that seem similar to this problem, but I cannot find the solution to this problem through those posts.

I have the following two tables that I am working with (I'm not posting the full table, just as much is needed to understand the problem):

Table 1: employee

emp_id first_name last_name
102 Michael Scott
108 Jim Halpert

Table 2: works_with

emp_id client_id total_sales
102 401 267,000
102 406 15,000
108 402 22,500
108 403 12,000

If this table data is not sufficient, I can go back and add more.

The issue I am having is with this code:

SELECT e.emp_id AS ID, 
e.first_name AS 'First Name', 
e.last_name AS 'Last Name', 
ww.total_sales = (SELECT SUM(ww.total_sales) 
                 FROM works_with
                 WHERE e.emp_id = ww.emp_id
                 ) AS Sales
FROM (employee e, works_with ww)
INNER JOIN works_with ON ww.emp_id = e.emp_id;

When I run the code like this, I get the error: "SQL Error (1242): Subquery returns more than 1 row."

I saw a solution online that said to add "Any" before the subquery, but this is the resulting table:

ID First Name Last Name Sales
102 Michael Scott 0

This is what I want the resulting table to look like:

ID First Name Last Name Sales
102 Michael Scott 282,000
108 Jim Halper 34,500

I am confused as to how I would fix this. Any help is greatly appreciated!

CodePudding user response:

This should give you the results you need where table 1 is the first table you mentioned and table 2 is the second

SELECT
    T1.*
    SUM(T2.TOTAL_SALES)
FROM <TABLE1> T1
    JOIN <TABLE2> T2 ON T1.EMP_ID = T2.EMP_ID
GROUP BY
    T1.EMP_ID, T1.FIRST_NAME, T1.LAST_NAME
  • Related