Unix Technical Forum

Merge the results of two queries

This is a discussion on Merge the results of two queries within the SQL Server forums, part of the Microsoft SQL Server category; --> Hi all, Here is my problem, I have 3 tables : People ------------- IDPeople Firstname Lastname Cars ------------ IDPeople ...


Go Back   Unix Technical Forum > Database Server Software > Microsoft SQL Server > SQL Server

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 02-28-2008, 06:14 PM
Philippe Bouffaut
 
Posts: n/a
Default Merge the results of two queries

Hi all,

Here is my problem, I have 3 tables :

People
-------------
IDPeople
Firstname
Lastname

Cars
------------
IDPeople
Carname

Boats
------------
IDPeople
Boatname

1 person can have 0 or n car/boat
I want to a result set displaying : Firstname, Lastname, NumberOfCars,
NumberOfBoats

I have two queries, but i want to merge the results in one. how can i do
this ?

This one gives me FIRSTNAME, LASTNAME and CARCOUNT
------------------------------------
SELECT dbo.People.IDPeople, dbo.People.FirstName, dbo.People.LastName,
COUNT(dbo.Cars.CarName) AS CARCOUNT
FROM dbo.People LEFT OUTER JOIN
dbo.Cars ON dbo.People.IDPeople = dbo.Cars.IDPeople
GROUP BY dbo.People.IDPeople, dbo.People.FirstName, dbo.People.LastName

This one gives me FIRSTNAME, LASTNAME and BOATCOUNT
------------------------------------
SELECT dbo.People.IDPeople, dbo.People.FirstName, dbo.People.LastName,
COUNT(dbo.Boats.BoatName) AS BOATCOUNT
FROM dbo.People LEFT OUTER JOIN
dbo.Boats ON dbo.People.IDPeople = dbo.Boats.IDPeople
GROUP BY dbo.People.IDPeople, dbo.People.FirstName, dbo.People.LastName



Thanks in advance
Phil


Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 02-28-2008, 06:15 PM
Rich Dillon
 
Posts: n/a
Default Re: Merge the results of two queries

Philippe,

You can UNION the queries and SUM the result or, more simply:

SELECT
p.IDPeople,
p.FirstName,
p.LastName,
COUNT(DISTINCT c.CarName) AS CarCount,
COUNT(DISTINCT b.BoatName) AS BoatCount
FROM
People AS p LEFT JOIN
Cars AS c ON p.IDPeople = c.IDPeople LEFT JOIN
Boats AS b ON p.IDPeople = b.IDPeople
GROUP BY
p.IDPeople,
p.FirstName,
p.LastName;


Hope that helps,
Rich



"Philippe Bouffaut" <-killspam-pbouffaut-nospam-@hotmail.com> wrote in
message news:g7cUa.10243$Wh.1088752@news20.bellglobal.com. ..
> Hi all,
>
> Here is my problem, I have 3 tables :
>
> People
> -------------
> IDPeople
> Firstname
> Lastname
>
> Cars
> ------------
> IDPeople
> Carname
>
> Boats
> ------------
> IDPeople
> Boatname
>
> 1 person can have 0 or n car/boat
> I want to a result set displaying : Firstname, Lastname, NumberOfCars,
> NumberOfBoats
>
> I have two queries, but i want to merge the results in one. how can i do
> this ?
>
> This one gives me FIRSTNAME, LASTNAME and CARCOUNT
> ------------------------------------
> SELECT dbo.People.IDPeople, dbo.People.FirstName, dbo.People.LastName,
> COUNT(dbo.Cars.CarName) AS CARCOUNT
> FROM dbo.People LEFT OUTER JOIN
> dbo.Cars ON dbo.People.IDPeople = dbo.Cars.IDPeople
> GROUP BY dbo.People.IDPeople, dbo.People.FirstName, dbo.People.LastName
>
> This one gives me FIRSTNAME, LASTNAME and BOATCOUNT
> ------------------------------------
> SELECT dbo.People.IDPeople, dbo.People.FirstName, dbo.People.LastName,
> COUNT(dbo.Boats.BoatName) AS BOATCOUNT
> FROM dbo.People LEFT OUTER JOIN
> dbo.Boats ON dbo.People.IDPeople = dbo.Boats.IDPeople
> GROUP BY dbo.People.IDPeople, dbo.People.FirstName, dbo.People.LastName
>
>
>
> Thanks in advance
> Phil
>
>



Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #3 (permalink)  
Old 02-28-2008, 06:15 PM
Philippe Bouffaut
 
Posts: n/a
Default Re: Merge the results of two queries

Thanks a lot Rich, that's it.
I missed the "DISTINCT" in the count.

Regards

"Rich Dillon" <richdillon@mindspring.com> wrote in message
news:bfs28e$k95$1@slb4.atl.mindspring.net...
> Philippe,
>
> You can UNION the queries and SUM the result or, more simply:
>
> SELECT
> p.IDPeople,
> p.FirstName,
> p.LastName,
> COUNT(DISTINCT c.CarName) AS CarCount,
> COUNT(DISTINCT b.BoatName) AS BoatCount
> FROM
> People AS p LEFT JOIN
> Cars AS c ON p.IDPeople = c.IDPeople LEFT JOIN
> Boats AS b ON p.IDPeople = b.IDPeople
> GROUP BY
> p.IDPeople,
> p.FirstName,
> p.LastName;
>
>
> Hope that helps,
> Rich
>
>
>
> "Philippe Bouffaut" <-killspam-pbouffaut-nospam-@hotmail.com> wrote in
> message news:g7cUa.10243$Wh.1088752@news20.bellglobal.com. ..
> > Hi all,
> >
> > Here is my problem, I have 3 tables :
> >
> > People
> > -------------
> > IDPeople
> > Firstname
> > Lastname
> >
> > Cars
> > ------------
> > IDPeople
> > Carname
> >
> > Boats
> > ------------
> > IDPeople
> > Boatname
> >
> > 1 person can have 0 or n car/boat
> > I want to a result set displaying : Firstname, Lastname, NumberOfCars,
> > NumberOfBoats
> >
> > I have two queries, but i want to merge the results in one. how can i do
> > this ?
> >
> > This one gives me FIRSTNAME, LASTNAME and CARCOUNT
> > ------------------------------------
> > SELECT dbo.People.IDPeople, dbo.People.FirstName,

dbo.People.LastName,
> > COUNT(dbo.Cars.CarName) AS CARCOUNT
> > FROM dbo.People LEFT OUTER JOIN
> > dbo.Cars ON dbo.People.IDPeople = dbo.Cars.IDPeople
> > GROUP BY dbo.People.IDPeople, dbo.People.FirstName, dbo.People.LastName
> >
> > This one gives me FIRSTNAME, LASTNAME and BOATCOUNT
> > ------------------------------------
> > SELECT dbo.People.IDPeople, dbo.People.FirstName,

dbo.People.LastName,
> > COUNT(dbo.Boats.BoatName) AS BOATCOUNT
> > FROM dbo.People LEFT OUTER JOIN
> > dbo.Boats ON dbo.People.IDPeople = dbo.Boats.IDPeople
> > GROUP BY dbo.People.IDPeople, dbo.People.FirstName, dbo.People.LastName
> >
> >
> >
> > Thanks in advance
> > Phil
> >
> >

>
>



Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT. The time now is 07:40 PM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
www.UnixAdminTalk.com