2
  $slt = mysql_query("select Slot, ItemId, UserId, max(Slot) Slot
  from useritems
  group by UserId");    

  while ($sloot = mysql_fetch_assoc($slt))
{
 Echo "<br>Items with biggest slots are: " . $sloot['ItemId'] . " from user " . $sloot['UserId']. "- in slot-". $sloot['Slot'];
}

这是桌子

Idi Quantity    ItemId  UserId  Slot    ExpirationDate

输出最小的插槽...为什么?

1.我想向我展示每个用户最大的库存槽,所以当我向他的库存添加新物品时,我可以在下一个槽中添加..从示例用户 Paul 有 5 件物品占用槽 1、2、3、4 ,5 并且下一个项目将在插槽 6 上。

2.当用户将他的物品移动到插槽 1,2,4,5,6 时,下一个添加的物品将在插槽 3 上

我做了很多搜索,但我找不到自己:) PS:这个游戏m making it只是为了好玩..但也许有一天会是一个很棒的游戏:)(梦想,梦想:)))

编辑:

SQLFIDDLE 非常好,谢谢:) 这正是我需要学习一些 SQL
表用户项

useritems 表 IMAGE
项目表

我的 Echo 向我展示了:

Id = 1 and it should be 3; user=4(good); slot=4(good)
Id = 1 and it should be 2; user=5(good); slot=2(good)
4

2 回答 2

1

也许是这样的:

select userid, itemid, max(slot) from useritems where itemid is not null and quantity>0
group by userid, itemid

如果您将表格脚本与一些数据共享,那么帮助您会更容易。

您可以使用:http ://sqlfiddle.com/

编辑:

那这个呢?itemid=0 表示插槽空闲?所以 min(slot) 将是用户的第一个空闲槽。

select userid, min(slot) from useritems where itemid=0 group by userid
于 2012-07-30T14:36:42.603 回答
0

我找到了!:) 我只是忘记选择 UserId=my_id 的数据,但只有当相应用户拥有超过 3 个项目时,它才会向我显示正确的输出......

$slt = mysql_query("SELECT * FROM useritems WHERE Slot=(select max(Slot) from useritems) and UserId='$id'");     

$id = $_SESSION['id'];

$slt = mysql_query("
    SELECT * FROM `useritems` 
    WHERE UserId='$id' AND Slot=(select max(Slot) 
    from useritems where UserId='$id')
");`

EDIT2:我找到了所有搜索的最佳方法,但我不知道如何使用 WHERE 子句 userId='$id'

$slt2 = mysql_query("select l.Slot + 1 as start
    from useritems as l
    left outer join useritems as r on l.Slot + 1 = r.Slot
    where r.Slot is null and l.UserId=4;
") or die(mysql_error());   `

使用此查询,项目应放置在 Slot 2(缺少),但它的不正确 Slot 6(对于 UserId=4 的用户来说是最高的)

最后这是最后一次编辑

$slt2 = mysql_query("SELECT  Slot + 1 as start
   FROM    useritems mo
   WHERE   NOT EXISTS
   (
       SELECT  NULL
       FROM    useritems mi 
       WHERE   mi.Slot = mo.Slot + 1 AND mi.UserId = '$id'  
   )ORDER BY Slot LIMIT 1
") or die(mysql_error());   `

这就是我正在搜索的内容。:X

于 2012-07-31T07:33:30.273 回答