MySQL Forums
Forum List  »  Newbie

Re: Question about LIMIT
Posted by: Dmitriy Reznik
Date: December 29, 2010 08:53AM

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.

Options: ReplyQuote


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


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.