Saturday 15 March 2014

real rank in mysql and php -


मैं एक साधारण एसक्यूएल-क्वाईरी करता हूं:

  SELECT `name`,` likes` `सामाजिक 'से` माह` =' 2015-01 '`डीसीईसी' के द्वारा आदेश /  

फिर मैं एक" रैंक "जोड़ूंगा जो कि ++

< पूर्व> $ डेटा = सरणी (); $ रैंक = 0; जबकि ($ table_row = mysqli_fetch_assoc ($ तालिका)) {$ rank ++; $ डेटा [$ table_row ['name']] = $ table_row; $ डेटा [$ table_row ['name']] ['रैंक'] = $ रैंक; }

नतीजा निकला है और मैं दाईं तरफ क्या चाहता हूं

  + ------ + ------ + - ------ + + ------ + ------ + ------- + | रैंक | नाम | पसंद | | रैंक | नाम | पसंद | + ------ + ------ + ------- + + ------ + ------ + ------- + | 1 | फू | 123 | | 1 | फू | 123 | | 2 | Mfoo | 33 | | 2 | Mfoo | 33 | | 3 | एक्सफू | 33 | | 2 | एक्सफू | 33 | | 4 | Yfoo | 30 | | 4 | Yfoo | 30 | | 5 | ज़ूफ़ू | 29 | | 5 | ज़ूफ़ू | 29 | + ------ + ------ + ------- + + ------ + ------ + ------- +  

मैं सही साइड टेबल कैसे प्राप्त करूं? प्रश्न में इसे हल करने का कोई तरीका क्या है?

संपादित करें:

वहां अब मैं खड़ा हूं:

  चुनें IF (@ पसंद = s.likes, @rownum, @rownum: = @ rownum + 1) रैंक 2, एस.डोमेन_नाम, एस.लिंक्स, (@ लक्स: = s.likes) से डमी सामाजिक एस, (SELECT @rownum: = 0) x, (SELECT @likes: = 0) y जहां `महीना` = '2015-01' ऑर्डर के अनुसार क्रम  

लेकिन रैंक 100% सही नहीं है क्योंकि मैं

के माध्यम से गिनती के बजाय रैंक को छोड़ना चाहता हूं; । मुझे सर्वोत्तम प्रथाओं के बारे में पता नहीं है, लेकिन मैं शायद खुद कुछ इस तरह से करूँगा:

  $ data = array (); $ रैंक = 0; $ Lastlike = 1; $ वर्तमान जैसा = 0; $ I = 0; जबकि ($ table_row = mysqli_fetch_assoc ($ तालिका)) {$ name = $ table_row ['name']; $ वर्तमान जैसा = $ टेबल_रो ['पसंद']; अगर ($ वर्तमान की तरह = $ अंतिम नहीं) $ रैंक ++; $ डेटा [$ i] = सरणी ('रैंक' = & gt; $ रैंक, 'नाम' = & gt; $ name, 'likes' = & gt; $ currentlike); $ Lastlike = $ currentlike; $ I ++; }  

मैंने इसे चेक नहीं किया है लेकिन आप इसका प्रयास करने के लिए स्वागत है और देखें।


No comments:

Post a Comment