topical media & game development

talk show tell print

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.