विचार योग की गणना करने के लिए एक सबक्वायरी का उपयोग करना है, फिर गणना करें और मानों को एक अल्पविराम-सीमांकित कॉलम में रखें, जिसे आप php में एक सरणी में बदल सकते हैं:
select v.ip, group_concat(v.visits / iv.maxvisits) as ratings
from visit v join
(SELECT ip, id, visits, max(visits) as maxvisits
FROM visit
GROUP BY ip
) iv
on v.ip = iv.ip
group by v.ip;
संपादित करें:
एसक्यूएल में टेबल्स स्वाभाविक रूप से अनियंत्रित हैं और एसक्यूएल में सॉर्टिंग स्थिर नहीं है (जिसका अर्थ है कि मूल ऑर्डर संरक्षित नहीं है)। आप group_concat()
. में एक आदेश निर्दिष्ट कर सकते हैं बयान। उदाहरण के लिए, निम्नलिखित id
के अनुसार परिणामों को क्रमित करेंगे :
select v.ip, group_concat(v.visits / iv.maxvisits order by id) as ratings
from visit v join
(SELECT ip, id, visits, max(visits) as maxvisits
FROM visit
GROUP BY ip
) iv
on v.ip = iv.ip
group by v.ip;
और यह सबसे पहले उच्चतम रेटिंग द्वारा क्रमित होगा:
रेटिंग के रूप मेंselect v.ip, group_concat(v.visits / iv.maxvisits order by v.visits desc) as ratings
id
. को शामिल करने के लिए आप सूची को और अधिक जटिल बना सकते हैं इसमें भी:
select v.ip,
group_concat(concat(v.id, ':', v.visits / iv.maxvisits)) as ratings