检索每个用户的最后一个动作以生成一个列表


PHP/MySQL Retrieve the last action of each user to make a list

我正在开发一个动态网站,但我有一个查询问题。我试图通过从数据库中检索日期动态地建立一个地图。我附上db结构:

国家(代码,名称)

data (user_id, dateaction, container)

users (user_id, country_code)

我想显示每个国家/地区的AVG容器列表,但是平均值应该从每个用户的最后一次操作中计算,并且应该提交当天的数据。在没有任何国家的"容器"值的情况下,值为0。我尝试了许多查询,但我无法达到目标。我附加了一些我尝试过的查询。

$query = "SELECT AVG(data.container), data.user_id, users.country_code ".
"FROM data, users ".
"WHERE data.user_id = users.user_id AND dateaction >= '".date('Y-m-d').' 00:00:00'."' AND date < '".date('Y-m-d').' 23:59:59'."'".
"GROUP BY users.country_code ";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
    $cid=$row['country_code'];
    $queryy=mysql_query("select * FROM Countries WHERE country_code='$cid'") or die("Error Occured,plz try again1");
    $rowy = mysql_fetch_array( $queryy );
    $cname=$rowy['country_name'];
    echo '<area title="'.strtoupper($cname).'" mc_name="'.strtoupper($cid).'"></area>'; }
你可以帮我解决这个逻辑问题吗?
$query = "SELECT a.user_id, ifnull(a.country_code, 0) as country_code, avg(a.container) ".
"FROM data a INNER JOIN ".
"(SELECT data.user_id, max(dateaction) dateaction ".
"FROM data".
"WHERE dateaction >= '".date('Y-m-d').' 00:00:00'."' AND date < '".date('Y-m-d').' 23:59:59'."'".
"GROUP BY data.user_id) b ".
"ON a.user_id = b.user_id and a.date_action = b.date_action ".
"GROUP BY a.user_id, ifnull(a.country_code, 0) "