Re: Question about LIMIT
OK, I figured out part of it. Here is my query now:
SELECT b.Title,
(SELECT GROUP_CONCAT(DISTINCT CONCAT(a.LastName, ', ', a.FirstName) SEPARATOR '<br />') FROM AuthorLinks al JOIN Authors a ON al.AuthorStem = a.AuthorStem WHERE b.BookStem = al.BookStem) AS Author,
(SELECT GROUP_CONCAT(DISTINCT CONCAT(n.LastName, ', ', n.FirstName) SEPARATOR '<br />') FROM NarratorLinks nl JOIN Narrators n ON nl.NarratorStem = n.NarratorStem WHERE b.BookStem = nl.BookStem) AS Narrator,
(SELECT GROUP_CONCAT(DISTINCT CONCAT(bc.Subject) SEPARATOR '<br />') FROM BisacLinks bl JOIN BisacCodes bc ON bl.BisacCode = bc.BisacCode WHERE b.BookStem = bl.BookStem) AS Genre,
b.PublicationDate, b.Imprint, b.1stPrint as FirstPrint,
CASE WHEN b.OrigAudPubDate IS NULL OR b.HCDate IS NULL THEN NULL
WHEN b.OrigAudPubDate <= b.HCDate OR
(b.OrigAudPubDate > b.HCDate AND b.OrigAudPubDate < DATE_ADD(b.HCDate, INTERVAL 3 MONTH))
THEN 'front'
WHEN b.OrigAudPubDate > DATE_ADD(b.HCDate, INTERVAL 3 MONTH)
THEN 'back'
END AS FrontlistBacklist,
(SELECT GROUP_CONCAT(DISTINCT CONCAT(ar.Name, ': ', ar.QltyReview) SEPARATOR '<br />') FROM AudioReviews ar WHERE b.BookStem = ar.BookStem) AS QltyReview,
(SELECT MAX(CASE WHEN r.r_type = 'Print' THEN r.Excerpts END) FROM
(SELECT BookStem, r_type, GROUP_CONCAT(DISTINCT Excerpt SEPARATOR '<br />') Excerpts
FROM Reviews
GROUP BY BookStem, r_type) r WHERE b.BookStem = r.BookStem
) AS PrintReviews,
(CASE WHEN MAX(CASE WHEN rr.Award LIKE 'PW%' THEN 1 ELSE 0 END) = 1 THEN 'X' ELSE '' END) AS PW,
(CASE WHEN MAX(CASE WHEN rr.Award LIKE 'BookList%' THEN 1 ELSE 0 END) = 1 THEN 'X' ELSE '' END) AS BL,
(CASE WHEN MAX(CASE WHEN rr.Award LIKE 'Library Journal%' THEN 1 ELSE 0 END) = 1 THEN 'X' ELSE '' END) AS LJ,
(CASE WHEN MAX(CASE WHEN rr.Award LIKE 'BookPage%' THEN 1 ELSE 0 END) = 1 THEN 'X' ELSE '' END) AS BP,
b.DL_Rank, b.HC_Rank, b.BookStem
FROM BookList b
-- LEFT OUTER JOIN (AuthorLinks al JOIN Authors a ON al.AuthorStem = a.AuthorStem)
-- ON b.BookStem = al.BookStem
-- LEFT OUTER JOIN (NarratorLinks nl JOIN Narrators n ON nl.NarratorStem = n.NarratorStem)
-- ON b.BookStem = nl.BookStem
-- LEFT OUTER JOIN (BisacLinks bl JOIN BisacCodes bc ON bl.BisacCode = bc.BisacCode)
-- ON b.BookStem = bl.BookStem
-- LEFT OUTER JOIN AudioReviews ar
-- ON b.BookStem = ar.BookStem
-- LEFT OUTER JOIN
-- (SELECT BookStem, r_type, GROUP_CONCAT(DISTINCT Excerpt SEPARATOR '<br />') Excerpts
-- FROM Reviews
-- GROUP BY BookStem, r_type) r
-- ON b.BookStem = r.BookStem
LEFT OUTER JOIN Reviews rr ON b.BookStem = rr.BookStem
GROUP BY b.BookStem ORDER BY b.BookStem -- limit 0, 100
But I am still not sure how to deal with this part:
(CASE WHEN MAX(CASE WHEN rr.Award LIKE 'PW%' THEN 1 ELSE 0 END) = 1 THEN 'X' ELSE '' END) AS PW,
(CASE WHEN MAX(CASE WHEN rr.Award LIKE 'BookList%' THEN 1 ELSE 0 END) = 1 THEN 'X' ELSE '' END) AS BL,
(CASE WHEN MAX(CASE WHEN rr.Award LIKE 'Library Journal%' THEN 1 ELSE 0 END) = 1 THEN 'X' ELSE '' END) AS LJ,
(CASE WHEN MAX(CASE WHEN rr.Award LIKE 'BookPage%' THEN 1 ELSE 0 END) = 1 THEN 'X' ELSE '' END) AS BP,
...
FROM BookList b
...
LEFT OUTER JOIN Reviews rr ON b.BookStem = rr.BookStem
Here I would have to use the same subquery 4 times... Is it the best solution?
Thanks.
Subject
Written By
Posted
December 22, 2010 07:59AM
December 22, 2010 08:41AM
December 22, 2010 08:50AM
December 22, 2010 10:47AM
December 22, 2010 03:05PM
December 22, 2010 03:16PM
December 28, 2010 08:06AM
December 22, 2010 04:38PM
December 28, 2010 08:08AM
December 28, 2010 03:23PM
December 29, 2010 08:26AM
Re: Question about LIMIT
December 29, 2010 08:53AM
December 29, 2010 09:42AM
December 29, 2010 09:55AM