[英]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
您可以在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.