$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个项目,ocupies slot 1,2, 3,4,5,下一个项目将在第6个插槽中。
2.当用户在插槽1,2,4,5,6上移动他的项目时,添加的下一个项目将在插槽3上
我做了很多搜索,但我找不到自己:) PS:游戏我m making it
只是为了好玩..但也许有一天会是一场伟大的比赛:)(梦想,梦想:)))
编辑:
SQLFIDDLE非常好谢谢:)这正是我需要学习的一些SQL 表用户项目
useritems Table IMAGE
items Table
我的回声告诉我:
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)
答案 0 :(得分: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
答案 1 :(得分: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()); `
使用此查询,该项目应放在插槽2上(至少丢失),但它显示插槽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