8

How to combine output of two or more SELECT statements, I have multiple tables which are having some data that I need to fetch them so I write multiple SELECT query. Now I want to combine result of the queries so what do I need to do ? I want the output to be:

t1.qty,t2.qty,t3.qty 
Marek
  • 3,555
  • 17
  • 74
  • 123
user2485642
  • 167
  • 1
  • 1
  • 8
  • Can you show us your queries? And what is your expected result? – Radu Gheorghiu Aug 13 '13 at 08:00
  • 1
    Did you look at `UNION` – Hanky Panky Aug 13 '13 at 08:01
  • Are you looking at joining 3 tables together, or merging 3 results set with the same columns? – Adriaan Stander Aug 13 '13 at 08:01
  • @Ø Hanky Panky Ø .qty actually looks like it's a `JOIN`.. – Radu Gheorghiu Aug 13 '13 at 08:02
  • select t1.ks, t1.[# Tasks], coalesce(t2.[# Late], 0) as [# Late] from (SELECT ks, COUNT() AS '# Tasks' FROM Table GROUP BY ks) t1 left join (SELECT ks, COUNT() AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks) t2 on t1.ks = t2.ks I am using this kind of query it work for on two level of join but I need to use more than two level . please suggest something like this so I can use – user2485642 Aug 13 '13 at 13:12

3 Answers3

22

One option would be:

SELECT (SELECT SUM(qty) FROM Table1 WHERE ...),
       (SELECT SUM(qty) FROM Table2 WHERE ...),
       (SELECT SUM(qty) FROM Table3 WHERE ...)

Another would be joining, provided that there is a link:

SELECT * 
FROM   (SELECT ID,SUM(qty) FROM Table1 GROUP BY ID) T1
       JOIN (SELECT ID,SUM(qty) FROM Table2 GROUP BY ID) T2
           ON T1.ID = T2.ID
       JOIN (SELECT ID,SUM(qty) FROM Table3 GROUP BY ID) T3
           ON T1.ID = T3.ID

The above options would be to display results in one row.

You may need union to combine rows:

SELECT qty FROM Table1
UNION
SELECT qty FROM Table2
UNION
SELECT qty FROM Table3

Much more options if you define more specific needs

Giannis Paraskevopoulos
  • 18,261
  • 1
  • 49
  • 69
3

Why not create a statement that will fetch them all at once?

SELECT tableA.data1, tableB.data2 FROM tableA, tableB WHERE <condition here>
cchana
  • 4,899
  • 3
  • 33
  • 43
bry
  • 39
  • 1
0

task1 = "select top " & strmcount & " * from nregistration where " & strtotal1
task2 = "select top " & strfcount & " * from nregistration where " & strtotal2

to make execute on parallel