簡體   English   中英

Mysql Query 使用單個查詢從三個表中獲取記錄

[英]Mysql Query for fetching records using single Query from three tables

我們有三張桌子
表 1- 應用程序( id , name )
表 2- appPlayer ( id , name )
表 3- appPlayerSession ( id , appId , appPlayerId , version)

我當前的查詢是:

SELECT  (select name from app k where k.id= aps.appId) AS appName,version,appId,count(version) FROM appPlayerSession aps GROUP BY appId,version,appName

我們需要統計每個版本相同的游戲的會話用戶數,並且還需要使用單個mysql查詢來獲取所有用戶數據的對象。

使用我的查詢的當前結果,但我們還需要每個應用程序的播放器..

在此處輸入圖片說明

由於您沒有給出您的預期結果,並且根據您的要求,您可以執行此操作。它可能會根據您的要求進行增強。

SELECT  (select name from app k where k.id= aps.appId) AS appName,version,appId,(select P.name from appPlayer P where P.id=aps.appPlayerid) as appPlayerName, count(version) FROM appPlayerSession aps GROUP BY appId,version,appName,appPlayerName

還要根據您創建的要求檢查小提琴,因為您沒有提供任何數據集及其基於我的假設。 http://sqlfiddle.com/#!9/30fe4f/1

根據您的新添加要求新建 Sql-

select X.appname,X.version,X.appid,GROUP_CONCAT(distinct X.appPlayerName      order by X.appPlayerName) as Users ,
 sum(X.vercount) 
 from (SELECT  (select name from app k where k.id= aps.appId) 
 AS appName,version,appId,
 (select P.name from appPlayer P where P.id=aps.appPlayerid) 
 as appPlayerName, count(version)as vercount
 FROM appPlayerSession aps 
 GROUP BY appId,version,appName,appPlayerName) X
 group by X.appname,X.version,X.appid

新小提琴 - http://sqlfiddle.com/#!9/13646c/5

您可以在sql中使用JOIN連接多個表並獲取結果

以下是格式:

SELECT t1.col, 
       t3.col 
FROM   table1 
       JOIN table2 
         ON table1.primarykey = table2.foreignkey 
       JOIN table3 
         ON table2.primarykey = table3.foreignkey 

在你的情況下:

SELECT app.col, 
       appPlayer.col,
     appPlayerSession.col 
FROM   app 
       JOIN appPlayer 
         ON app.id = appPlayer.appId
       JOIN appPlayerSession 
         ON appPlayer.id = appPlayerSession.appPlayerId

希望這是有幫助的。

一個建議。 將駝峰命名用於表名和列名不是標准。 snake_case 是廣泛首選的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM