Beginning SQL

Beginning SQL Beginning SQL

marjan.fesb.hr
from marjan.fesb.hr More from this publisher
20.07.2013 Views

Chapter 9 280 SalesPersonId MemberId 1 4 1 6 1 7 1 9 2 4 2 7 2 10 Although you now have the answer to the question, it would be a whole lot nicer to see the names rather than SalesPersonId and MemberId. To display the names, create a join between the SalesPerson and MemberDetails tables: SELECT SalesPerson.SalesPersonId, SalesPerson.FirstName, SalesPerson.LastName, MemberDetails.MemberId, MemberDetails.FirstName, MemberDetails.LastName FROM (Orders INNER JOIN MemberDetails ON Orders.MemberId = MemberDetails.MemberId) INNER JOIN SalesPerson ON Orders.SalesPersonId = SalesPerson.SalesPersonId GROUP BY SalesPerson.SalesPersonId, SalesPerson.FirstName, SalesPerson.LastName, MemberDetails.MemberId, MemberDetails.FirstName, MemberDetails.LastName HAVING COUNT(Orders.MemberId) > 1 ORDER BY SalesPerson.SalesPersonId Although you added a lot of new code, it’s just a result of joining two new tables, MemberDetails and SalesPerson. The various names and IDs of the salespeople and members have been added to the SELECT column list, as shown in the following: SELECT SalesPerson.SalesPersonId, SalesPerson.FirstName, SalesPerson.LastName, MemberDetails.MemberId, MemberDetails.FirstName, MemberDetails.LastName The column names appear in more than one of the tables, so each has to be prefixed by the name of the table the column comes from. The GROUP BY clause requires that columns in the SELECT column list also appear in the GROUP BY list, so you added them there also:

Chapter 9<br />

280<br />

SalesPersonId MemberId<br />

1 4<br />

1 6<br />

1 7<br />

1 9<br />

2 4<br />

2 7<br />

2 10<br />

Although you now have the answer to the question, it would be a whole lot nicer to see the names rather<br />

than SalesPersonId and MemberId. To display the names, create a join between the SalesPerson and<br />

MemberDetails tables:<br />

SELECT SalesPerson.SalesPersonId,<br />

SalesPerson.FirstName,<br />

SalesPerson.LastName,<br />

MemberDetails.MemberId,<br />

MemberDetails.FirstName,<br />

MemberDetails.LastName<br />

FROM (Orders INNER JOIN MemberDetails<br />

ON Orders.MemberId = MemberDetails.MemberId)<br />

INNER JOIN SalesPerson<br />

ON Orders.SalesPersonId = SalesPerson.SalesPersonId<br />

GROUP BY SalesPerson.SalesPersonId,<br />

SalesPerson.FirstName,<br />

SalesPerson.LastName,<br />

MemberDetails.MemberId,<br />

MemberDetails.FirstName,<br />

MemberDetails.LastName<br />

HAVING COUNT(Orders.MemberId) > 1<br />

ORDER BY SalesPerson.SalesPersonId<br />

Although you added a lot of new code, it’s just a result of joining two new tables, MemberDetails and<br />

SalesPerson. The various names and IDs of the salespeople and members have been added to the<br />

SELECT column list, as shown in the following:<br />

SELECT SalesPerson.SalesPersonId,<br />

SalesPerson.FirstName,<br />

SalesPerson.LastName,<br />

MemberDetails.MemberId,<br />

MemberDetails.FirstName,<br />

MemberDetails.LastName<br />

The column names appear in more than one of the tables, so each has to be prefixed by the name of the<br />

table the column comes from. The GROUP BY clause requires that columns in the SELECT column list also<br />

appear in the GROUP BY list, so you added them there also:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!