1

这是背景,我有一个object包含以下内容的表格:

  • ID
  • 用户(来自用户表的 ID)
  • 日期(日期)
  • 状态 (0|1)

另一个表user包含:

  • ID
  • 状态 (0|1)

前任。:

Object
    ID  |  USER  |  DATE  |  STATE
    1      1      2012-10-01 1
    2      2      2012-08-01 1
    3      3      2012-10-01 1
    4      3      2012-10-02 1
    5      3      2012-09-01 1
    6      3      2012-10-01 1
    7      1      2012-10-02 1
    8      2      2012-10-02 0
    9      2      2012-10-02 1
    10     1      2012-10-01 1
    11     2      2012-10-01 1
    12     3      2012-10-01 0
    13     4      2012-11-11 1

Users
    ID  |  STATE
    1   |  1
    2   |  1
    3   |  1
    4   |  0

我会请求循环显示每个有效状态用户的一个对象,如果对象状态处于活动状态,则按日期 DESC 排序。
前任。结果 :

ID  |  USER  |  DATE  |  STATE
10     1      2012-11-01 1
9      2      2012-10-02 1
4      3      2012-10-02 1
7      1      2012-10-02 1
11     2      2012-10-01 1
3      3      2012-10-01 1
1      1      2012-10-01 1
2      2      2012-08-01 1
6      3      2012-10-01 1
5      3      2012-09-01 1

我可以做简单的查询,但我承认不知道该怎么做。

编辑 2012-11-22: 让我们尝试另一种方法......通过这个查询(感谢 Michiel van Vaardegem),我有一个用户列表,以便我想要......顶部有新鲜度对象的用户。

SELECT o.user
FROM object o
INNER JOIN users ON user.id = o.user
WHERE o.state=1 AND users.state=1
GROUP BY o.user
ORDER BY o.date DESC

结果是:

USER
1
2
3

新问题方法:有了这个 id 列表、可能计算的行数和用户定义的变量,你认为可以做些什么吗?
例子:

  1. 假设这个列表,SELECT * FROM object WHERE user IN ($thislist) AND state=1 ORDER BY date DESC
  2. 对于每个对象行,取决于用户(这里我不知道如何在 mysql 中解释) 用 userposition(in cycle) + usercount 增加一个 rank var
  3. ORDER BY rank LIMIT n,x结果

我想在用户周期中对我的对象进行排名,例如:

object from user 1,2,3,1,2,3,1,3,3,1,1,1,1,1,1,1,1,etc... if exist

这种新的方法算法是否可以在 mysql 查询中实现,如果可能的话,如何......这是个好问题?

任何人都只能在 MySQL 中看到解决方案吗?
提前致谢

4

1 回答 1

0

就像是:

SELECT o.id, o.user, o.date, 1 AS state
FROM object o
INNER JOIN user ON u.id = o.user
WHERE o.state = 1 AND u.state = 1
GROUP BY o.user, o.date
ORDER BY o.user, o.date DESC

我不确定,但如果我没看错,你只需要两个表中的状态都是“1”的记录,对吗?你想先按用户排序,然后按日期排序?

于 2012-11-20T15:13:04.967 回答