大家。我是新来的,我有一个关于SQL的问题,我似乎认为在SQL中可能很容易做,但我没有想法,我可以帮助解决我的问题。
所以我有一个表(sql也在这里http://www.sqlfiddle.com/#!2/b9a37/1/0)
每个人有多个出现,不同的id有自动增量,我有3个字段,“类别”,“在”和“出”
我正在尝试实现的是一种让我知道桌面上的某些用户何时属于使用“In”和“Out”作为限制的系统的方式。
实施例
在上面的例子中,我想知道谁在2010年属于该系统:
因此,对于用户A,他在2010年离开了A类,但在2011年的2011类别中加入,因此他应该在2010年成为A类用户
对于用户B,他不应属于该系统,因为2010 +
没有新的条目最后,我要为2010年提供以下输出
我没有达到我想要的结果,例如
SELECT * from users
WHERE (users.In<=2010 and users.Out=2010)
输出
但罗杰和米勒在2010年离开了这个系统,所以他们不应该在2010年成为会员,史密斯和巴勃罗在2010年改变他们的类别,所以他们应该在输出中显示。
一些注意事项: 不要问我为什么这个解决方案是这样开发的,我只是偶然发现并尝试解决这个问题。 我正在考虑在php中执行一个功能,根据我想要的要求过滤数据,因为我已经没有想法来解决这个问题了。 如果你找到一种方法来实现这一点比我在这里看到的更好,做我的客人,我会接受新的想法。
提前致谢。
最后的注意事项: 也许使用http://www.sqlfiddle.com/#!2/b9a37/1/0并尝试找到所需的输出将帮助你。
答案 0 :(得分:1)
给这个人一个机会:
select Name, Category
from users
where `In` <= 2010 and (
`Out` > 2010 or name in (
select name
from users
where `In` = 2011
)
)
答案 1 :(得分:0)
这似乎有效:
select * from users a, users b where a.name = b.name and a.out + 1 = b.out
但是,如果多个用户具有相同的姓氏并且假设年份比年份少一个,则它将无法正常工作。