2012-08-26 178 views
0

有谁有关于如何构建以下查询一个想法:复杂的SQL查询

表:

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

所以,基本上Categories有很多场比赛。

Events有很多游戏。

我想生成一份报告,显示所列的GamesEvents中的使用数量。按降序排列。

这可能吗?

+0

嗯,我有工作,当我通过游戏表现出来:SELECT g.TXT_NAME姓名,e.INT_GAME_ID为ID,SUM(e.INT_QUANTITY)作为共有来自LU_GAME_TO_EVENT e,TBL_GAME g其中g.INT_ID = e.INT_GAME_ID GROUP BY e.INT_GAME_ID ORDER BY total DESC – Spunog

+0

所以我需要类似的地方,所有属于一个类别的游戏加在一起,并显示在类别标题 – Spunog

回答

1
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; 

在这里我不调整金额,因为列不存在。 您必须在目标表中添加量列

+0

下表LU_GAME_TO_EVENT有一个列INT_QUANTITY。所以我想为每个类别添加。感谢您的帮助。 – Spunog

+0

关于如何调整此查询以提供每个类别的总计的任何想法?目前上面的查询是为每个游戏/订单返回一行 – Spunog

+0

我添加了代码Spunog –

2
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