से अधिकतम सीमा 1 का चयन करें मैं वेबपृष्ठ कैश सिस्टम में बना रहा हूं। मैं आउटपुट के साथ एक साधारण पेज रैंक सिस्टम बनाना चाहता था। समस्या यह है कि, मैं प्रति अद्वितीय डोमेन के उच्चतम प्रासंगिकता स्कोर के साथ रिकॉर्डसेट प्रदर्शित करना चाहता हूं। एक डोमेन में एकाधिक रिकॉर्ड हो सकते हैं लेकिन अलग-अलग शीर्षक, विवरण इत्यादि के साथ समस्या यह है कि, एक अद्वितीय डोमेन वाले 1 रिकॉर्डसेट प्राप्त करने के बजाय, यह उस अद्वितीय डोमेन के सभी रिकॉर्ड्स को समूहित करता है और उन सभी को आउटपुट करता है। मैं सिर्फ समूह में अद्वितीय डोमेन प्रति उच्चतम प्रासंगिकता स्कोर के साथ recordset चाहते से पहले ही (उस समूह के लिए उच्चतम प्रासंगिकता के साथ और अलग डोमेन) अगले आउटपुटसमूह
SELECT title, html, sum(relevance) FROM
(
SELECT title, html, 10 AS relevance FROM page WHERE title like ‘%about%’ UNION
SELECT title, html, 7 AS relevance FROM page WHERE html like ‘%about%’ UNION
SELECT title, html, 5 AS relevance FROM page WHERE keywords like ‘%about%’ UNION
SELECT title, html, 2 AS relevance FROM page WHERE description like ‘%about%’
) results
GROUP BY title, html
ORDER BY relevance desc;
मैं हो रही है:
domain1 title html
domain1 title html
domain1 title html
domain2 title html
domain2 title html
domain2 title html
क्या मैं चाहता हूँ
domain1 title html
domain2 title html
domain3 title html
domain4 title html
domain5 title html
कोई फर्क नहीं पड़ता कि मैं यह कैसे करता हूं मैं अमान्य कॉलम 'प्रासंगिकता' – Patriotec
@kinjite प्राप्त करता रहता हूं: ऐसा इसलिए है क्योंकि 'प्रासंगिकता' एक कॉलम उपनाम है, जहां WHERE खंड में संदर्भित किया गया है। SQL सर्वर ग्रुप BY में कॉलम उपनामों का संदर्भ देने का समर्थन करता है, लेकिन WHERE –
@OMG Ponies: या ORDER BY, अगर मुझे सही याद है। मैंने इसे ठीक करने के लिए जवाब संपादित किया। यह बहुत बदसूरत है, लेकिन यह काम करेगा। मैंने पहले इस हैक का उपयोग किया है। –