2012-11-20 19 views
1

這裏的背景,我有一個表object包含:MySQL的循環每一行對應一個有效的用戶

  • ID
  • 用戶(ID從用戶表)
  • 日期(日期)
  • 狀態(0 | 1)

和含有另一個表user

  • ID
  • 狀態(0 | 1)

EX:

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。
EX。結果:

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日: 我們嘗試其他計算策略......有了這個查詢(感謝米歇爾麪包車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 

新問題計算策略: 隨着IDS的這份名單中,行可能計算次數,和用戶定義的增值經銷商,你覺得有什麼可以做的?
例:

  1. 假設這個名單,SELECT * FROM對象,其中在這裏用戶 ($ thislist)和國家= 1個ORDER BY日期DESC
  2. 對於根據用戶的每一個對象行(我不知道怎麼在mysql中講解) 遞增一個級別變種與userposition(循環)+ USERCOUNT位
  3. ORDER BY級別限制N,X日在結果

我whant排名我的對象在用戶循環,如:

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中看到解決方案嗎?
在此先感謝

回答

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」,正確嗎? 而你想先對用戶進行排序,然後再對日期進行排序?

+0

是的正確,但在一個循環客戶端1,2,3,1,2,3,1,2,3,1,1,1等...我會在幾分鐘內嘗試你的查詢;)謝謝 – luca

+0

啊我的不好,這個查詢返回第一個用戶1的所有記錄,然後爲用戶2等 –

+0

我確認後嘗試,在所有情況下,非常感謝;) – luca

相關問題