我有一个运行2个查询的PHP脚本。第一个查询是
"SELECT PID , EXPERIENCE , LASTLOGIN , WON , LOST , TIED , PRODUCT1_COUNT , PRODUCT2_COUNT , PRODUCT3_COUNT , AD_FREE , CODENAME , FB_UID , WSBALANCE , BEST_GAME_SCORE , BEST_WORD_SCORE , BEST_MOVE_SCORE , MW_PLAYED
FROM user
WHERE (PID > 9 AND (('. $serverTime .'- LASTLOGIN < 1209600) OR (AD_FREE + PRODUCT1_COUNT + PRODUCT2_COUNT + PRODUCT3_COUNT + PRODUCT4_COUNT ) > 0 ))"
然后脚本的下一步是遍历此查询的每一行以构建一个html表。在此过程中,我正在查询第二个表(games1)以获取第一个查询返回的活动游戏数量。
$id = $row['PID'];
$pSQL = "SELECT COUNT(SID) AS c
FROM games1
WHERE ACTIVE = 1 AND (P1_UID = $id OR P2_UID = $id OR P3_UID = $id OR P4_UID = $id)";
我一直试图将我的大脑包围在如何使用join来组合这两个查询,但我只是没有得到它。我非常感谢帮助,因为这个组合会节省我们的脚本一点时间。
答案 0 :(得分:1)
您可以使用join,下面的查询将提供来自用户表的数据和来自每个用户的游戏表的计数
SELECT
u.PID,
u.EXPERIENCE,
u.LASTLOGIN,
u.WON,
u.LOST,
u.TIED,
u.PRODUCT1_COUNT,
u.PRODUCT2_COUNT,
u.PRODUCT3_COUNT,
u.AD_FREE,
u.CODENAME,
u.FB_UID,
u.WSBALANCE,
u.BEST_GAME_SCORE,
u.BEST_WORD_SCORE,
u.BEST_MOVE_SCORE,
u.MW_PLAYED ,
COUNT(g.SID) AS c
FROM
`user` u
LEFT JOIN games1 g
ON (
(g.P1_UID = u.PID
OR g.P2_UID = u.PID
OR g.P3_UID = u.PID
OR g.P4_UID = u.PID) AND g.ACTIVE = 1
)
WHERE (PID > 9
AND (( '. $serverTime .' - u.LASTLOGIN < 1209600)
OR (u.AD_FREE + u.PRODUCT1_COUNT + u.PRODUCT2_COUNT + u.PRODUCT3_COUNT + u.PRODUCT4_COUNT) > 0)
)
GROUP BY u.PID