topical media & game development
basic-mysql-10-ch10-TryItOut.sql / sql
/* Chapter 10 - Try It Out sections */
/* Try It Out: Using Full Joins to Retrieve Data */
SELECT DVDName, MTypeDescrip As MovieType
FROM DVDs AS d, MovieTypes AS mt
WHERE d.MTypeID=mt.MTypeID AND StatID='s2'
ORDER BY DVDName;
SELECT DVDName, MTypeDescrip As MovieType,
CONCAT(d.RatingID, ': ', r.RatingDescrip) AS Rating
FROM DVDs AS d, MovieTypes AS mt, Ratings AS r
WHERE d.MTypeID=mt.MTypeID AND d.RatingID=r.RatingID
AND StatID='s2'
ORDER BY DVDName;
SELECT DVDName, MTypeDescrip AS MovieType,
CONCAT(d.RatingID, ': ', r.RatingDescrip) AS Rating
FROM MovieTypes AS mt CROSS JOIN DVDs AS d USING (MTypeID)
CROSS JOIN Ratings AS r USING (RatingID)
WHERE StatID='s2'
ORDER BY DVDName;
SELECT CONCAT_WS(' ', CustFN, CustMN, CustLN) AS Customer, TransID
FROM Customers INNER JOIN Orders USING (CustID)
INNER JOIN Transactions USING (OrderID)
WHERE DVDID=4
ORDER BY CustLN;
SELECT CONCAT_WS(' ', PartFN, PartMN, PartLN) AS Participant, DVDName,
RoleDescrip AS Role
FROM DVDs AS d, DVDParticipant AS dp, Participants AS p, Roles AS r
WHERE d.DVDID=dp.DVDID AND p.PartID=dp.PartID AND r.RoleID=dp.RoleID
ORDER BY PartLN;
/* Try It Out: Including Subqueries in Your SELECT Statements */
SELECT DVDName
FROM DVDs
WHERE StatID<>
(SELECT StatID FROM Status WHERE StatDescrip='Available')
ORDER BY DVDName;
SELECT DVDName, MTypeDescrip As MovieType
FROM DVDs AS d, MovieTypes AS mt
WHERE d.MTypeID=mt.MTypeID AND StatID=
(SELECT StatID FROM Status WHERE StatDescrip='Available')
ORDER BY DVDName;
SELECT DVDName, MTypeDescrip As MovieType
FROM DVDs AS d, MovieTypes AS mt
WHERE d.MTypeID=mt.MTypeID AND StatID IN
(SELECT StatID FROM Status WHERE StatDescrip<>'Available')
ORDER BY DVDName;
SELECT MTypeID, RatingID, COUNT(*) AS TotalDVDs
FROM DVDs
GROUP BY MTypeID, RatingID
HAVING MTypeID IN
(SELECT MTypeID FROM MovieTypes WHERE MTypeDescrip<>'Documentary');
/* Try It Out: Using Unions to Join SELECT Statements */
CREATE TABLE Employees2
(
EmpID SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
EmpFN VARCHAR(20) NOT NULL,
EmpLN VARCHAR(20) NOT NULL
)
ENGINE=INNODB;
INSERT INTO Employees2
VALUES (NULL, 'Rebecca', 'Reynolds'),
(NULL, 'Charlie', 'Waverly');
(SELECT EmpLN, EmpFN FROM Employees)
UNION
(SELECT EmpLN, EmpFN FROM Employees2)
ORDER BY EmpLN;
(C) Æliens
20/2/2008
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.