简体   繁体   中英

Complicated SQL query

Does anyone have an idea about how to structure the following query:

Tables :

TBL_GAME                 id,      name
TBL_CATEGORY             id,      name
LU_GAME_TO_CATEGORY      gameid,  catid
LU_GAME_TO_EVENT         eventid, gameid

So, basically Categories have many games.

Events have many games.

I want to generate a report that shows the Categories listed by how many of its Games were used in Events . Ordered by the amount descending.

Is this possible ?

SELECT
       c.id                 as catId,
       c.name               as catName,
       g.id                 as gameId,
       g.name               as gameName,
       sum(ge.INT_QUANTITY) as totalQuantities
FROM
       TBL_CATEGORY         as c,
       TBL_GAME             as g,
       LU_GAME_TO_CATEGORY  as gc,
       LU_GAME_TO_EVENT     as ge
WHERE
       c.id = gc.catId     AND
       g.id = gc.gameId    AND
       g.id = ge.gameId
GROUP BY
       c.id,
       g.id
ORDER BY
       totalQuantities desc,
       c.name,
       g.name
SELECT A.ID, SUM(D.INT_QUANTITY) AS YourSum
FROM TBL_CATEGORY A --Adapt your selected columns 
INNER JOIN LU_GAME_TO_CATEGORY B ON A.id = B.catid
INNER JOIN TBL_CATEGORY C ON B.gameid = C.id
INNER JOIN LU_GAME_TO_EVENT  D ON C.gameid = D.gameid
GROUP BY A.ID
ORDER BY YourSum DESC;

Here i don't adjust amount, because columns does not exist. You must add Amount column in target table

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM