桌子items
id maxVotes parent type
10 2 9 heading
11 0 10 item
12 0 10 item
桌子votes
userId votedFor parent
1 11 10
1 12 10
2 12 10
我正在尝试检查一个项目是否存在,以及用户是否投票支持该标题下允许的最大项目数。
在上面的示例中,表items
包含项目。表votes
包含用户投票。
表items
type : heading
指定用户可以投票的最大项目数col : maxVotes
。在这种情况下,它是2
.
在表中votes
user 1
已对 2 个项目进行了投票,并且不能再items
对该标题下的项目进行投票。用户 2 可以多投票 1 项。
就这样继续下去。
我目前的做法(使用 php)是:
select id, parent from items where id = 11 //The item exists.
select maxVotes from items where id = parent // This gives me the maximum items a user can vote for.
select count(votedFor) as votes from votes where userId = 1 // This'll give me 2.
User 1 can vote no more, but user 2 can vote once more -> Add his vote to the votes table
除了我上面的方法之外,你能想出一种更简单、更有效和更复杂的方法吗?
我可以对事情进行更改,因为这仍然没有实现。或者,这是最好的方法吗?