每个人。我是新来的,我有一个关于 SQL 的问题,我似乎认为这在 SQL 中可能很容易做到,但我没有想法,我可以使用一些帮助来解决我的问题。
所以我有一张桌子(sql也在这里http://www.sqlfiddle.com/#!2/b9a37/1/0)
每个人多次出现,不同的 id 具有自动增量,我有 3 个字段,“Category”、“In”和“Out”
我试图实现的是一种让我知道桌子上的一些用户何时属于使用“In”和“Out”作为限制的系统的方法。
例子
- 用户 A - A 类 - IN 2002 OUT 2010
- 用户 A - B 类 - IN 2011 OUT 9999
- 用户 B - B 类 - IN 2002 OUT 2010
在上面的例子中,我想知道谁属于 2010 年的系统:
所以对于用户 A,他在 2010 年离开了 A 类,但在 2011 年加入了 2011 年的类别,所以他应该是 2010 年的 A 类用户
对于用户 B,他不应该属于系统,因为 2010+ 没有新条目
最后,我想为 2010 年提供以下输出
- 史密斯 A 类
- 巴勃罗 A 类
例如,我没有达到我想要的结果
SELECT * from users
WHERE (users.In<=2010 and users.Out=2010)
输出
- 史密斯 A 类 2002 年 2010 年
- 罗杰 B 类 2002 年 2010 年
- 米勒 B 类 2008 年 2010 年
- 巴勃罗 A 类 2002 年 2010 年
但是 Roger 和 Miller 在 2010 年离开了系统,所以他们不应该在 2010 年成为成员,而 Smith 和 Pablo 在 2010+ 年改变了他们的类别,所以他们应该在输出中显示。
几点注意事项:不要问我为什么要这样开发这个解决方案,我只是偶然发现它并试图解决这个问题。我正在考虑在 php 中执行一个函数,根据我想要的要求过滤数据,因为我已经没有解决这个问题的想法了。如果您找到一种比我在这里看到的更好的方法来实现这一点,请成为我的客人,我对新想法持开放态度。
提前致谢。
最后说明:也许使用http://www.sqlfiddle.com/#!2/b9a37/1/0并尝试找到所需的输出会帮助你。