MYSQL:根据表B中用户的日期从表A中选择

时间:2014-03-31 01:30:46

标签: mysql sql

好的我有三个表RegionName(密钥,名称),玩家(密钥,名称,看到)和区域播放器(密钥,区域密钥,播放器密钥)

每个表都有更多,但不需要它,所以为了使这更容易,我只包含了所需的内容。 我有区域,一个玩家可以添加到一个区域,一个区域可以有很多玩家,玩家可以在很多地区。表格中有1680个地区,900个玩家和约3500个参赛作品。

我希望能够找到8天以上没有看过任何球员的区域。

我的主要内容是:

SELECT RegionName.*, RegionPlayer.*, Players.*
FROM RegionName
JOIN RegionPlayer
    ON RegionPlayer.Regionkey= RegionName.Key
JOIN Players
    ON Players.Key = RegionPlayer.Playerkey
WHERE
    ( Seen <= (NOW() - INTERVAL 8 DAY   ) ) ) 
    AND RegionName.Perent = 'none'
    ORDER BY `RegionName`.`Name` ASC,
    Players.Seen DESC

目前我所有人都没有被人看过8天以上,所以如果一个地区有1名没有被人看过的人,那么它会被退回,但我只想要每个人都去过的地方8 +天。

这是一种抽样,如果每个表的数据,这是我刚刚完成的。因为它比试图提取足够的数据更容易,并且应该给出我想要的结果。

RegionName
    key Name
    1   regionone
    2   regiontwo
    3   regionthree
    4   regionfouor
    5   regionfive

Players
    Key     Name    Seen
    1       jack    2014-03-21 12:43:46
    2       joe     2014-03-26 12:43:46
    3       bob     2014-03-20 12:43:46
    4       bill    2014-03-19 12:43:46
    5       dave    2014-03-17 12:43:46
    6       tina    2014-03-28 12:43:46
    7       tony    2014-03-29 12:43:46
    8       george  2014-03-15 12:43:46
    9       sam     2014-03-18 12:43:46
    10      frank   2014-03-18 12:43:46

RegionPlayer
    key Regionkey   PlayerKey
    1   1           1
    2   1           4
    3   1           5
    4   2           1
    5   2           4
    6   2           2
    7   3           6
    8   3           1
    9   3           7
    10  4           1
    11  4           8
    12  4           7
    13  4           5
    14  5           3

所以我应该根据这些数据获取区域regionone&amp; regionfive。

1 个答案:

答案 0 :(得分:1)

SELECT RegionName.*, RegionPlayer.*, Players.*
FROM RegionName
JOIN RegionPlayer
    ON RegionPlayer.Regionkey= RegionName.Key
JOIN Players
    ON Players.Key = RegionPlayer.Playerkey
WHERE RegionName.Perent = 'none'
GROUP BY RegionName.Name
HAVING 
    SUM( Seen > (NOW() - INTERVAL 8 DAY ) ) =0
    ORDER BY `RegionName`.`Name` ASC,
    Players.Seen DESC