通过两个ID对查询进行排名,然后进行合并

时间:2014-07-11 10:49:01

标签: php mysql sql

我基本上已经有了这个:

SELECT APPID, 
  (
    SELECT COUNT(*) 
    FROM table 
    WHERE APPID = alias.APPID 
    AND end > (php time()) 
    AS COUNT
  )
FROM table AS alias
GROUP BY APPID
ORDER BY count DESC
LIMIT 5

我用它来排列APPID最多的东西,但现在我遇到了问题。

我有两个表games_steam,来自两个不同API的games_other。为了在它们之间创建一个链接,我添加了一个" steamappid"列到games_other。因为这两个表游戏可以在排名搜索中有两个APPIDS,无论如何都在搜索steam_games.APPID在games_other.steamappid和排名中显示的位置,合并(合并到games_other.APPID是主ID)哪些是相关的?

如果这有意义吗?

示例:

games_other

.# | APPID | NAME | steamappid |  
----------------------------------------;  
1 | 440 | game 1 | NULL |  
2 | 654 | game 2 | S423  |  
3 | 435 | game 3 | S35   |

games_steam

.# | APPID | NAME |    
-----------------------;    
1 | S35 | game 3 |  
2 | S86 | game 4 |  
3 | S423 | game 2 |   

条目

ID | APPID  
0  | S35  
1  | 435  
2  | S35   
2  | 435  
3  | 440  
4  | 654  
5  | 654  
5  | S423  
0  | S86  

因此,当他们按照条目进行排名和排序时,它会显示:

APPID | COUNT  

435 | 4  
654 | 3  
S86 | 1  
440 | 1  

1 个答案:

答案 0 :(得分:0)

如果我理解你想要的东西,我不是百分之百确定你是否有可能在没有副选择的情况下出现并使用加入而不是这样?

SELECT gs.APPID, COUNT(gs.APPID) AS total_count
FROM games_steam gs
LEFT JOIN games_other go
ON gs.APP_ID = go.steamappid
GROUP BY gs.APPID