2012-05-22 16 views
6

के साथ एन-प्रति-समूह मैं here के रूप में तर्क को दोहराने की कोशिश कर रहा हूं। हालांकि, इसमें शामिल होने पर मुझे कोई भाग्य नहीं है। नीचे मेरी क्वेरी का कम से कम संस्करण है:जॉइन

SELECT resources.title, catRel.catRef 
FROM resources 
LEFT JOIN placesRel ON placesRel.refId = resId 
LEFT JOIN catRel ON refId = resId 
WHERE ... 

संक्षेप में, मैं एक सूची है, जो होता है श्रेणी आईडी हो रही है और मैं एक वर्ग से अधिक नहीं n परिणाम के लिए परिणामों को सीमित करना चाहते हैं,

title    catRef 
Swizz Gubbinz  1 
Runcible Spoons 1 
Peter Pan DVD  2 
Button Moon  2 
Monkey Alan  3 
Bilge Pump  3 
+0

जहां catref <= 2' कहां है? – eggyal

+0

संसाधनों से दोनों शीर्षक और catRef हैं? –

+0

मैंने थ्रेड को थोड़ा और विशिष्ट होने के लिए अद्यतन किया है, क्योंकि आउटपुट उदाहरण मैंने सुझाव दिया है कि मैं catRef = 2. के लिए देख रहा था। शीर्षक संसाधनों में है और catRef catRel में है। –

उत्तर

2

के भीतर एक सबक्वेरी उपयोग के बारे में कैसे अपने में शामिल होने: उदाहरण के लिए, catRef प्रति केवल दो परिणाम दिखाते हैं। मैं जो तालिका refID और resid के थे यकीन नहीं था, लेकिन .....

SELECT resources.title, catRel.catRef 
FROM resources 
LEFT JOIN placesRel ON placesRel.refId = resId 
LEFT JOIN catRel as cr1 ON cr1.catRel.primaryKey in (select cr2.primaryKey from catRel as cr2 where cr2.refID = resId Limit 0,2) 
WHERE ... 
+1

ने इसका परीक्षण नहीं किया है- लेकिन यह वही है जो मैं कोशिश करता हूं, शायद सबकुरी में "ऑर्डर बाय" खंड के साथ – ErichBSchulz

0

MySQL से खिड़की कार्य की कमी में, इस सवाल का जवाब तुच्छ नहीं है। यहां एक चाल है जो MySQL के GROUP_CONCAT: MySQL: Selecting Top N Records Per Group का उपयोग करके प्रति समूह शीर्ष एन रिकॉर्ड का चयन करती है।

एक समग्र कार्य होने के नाते, GROUP_CONCAT को वांछित क्रम में समेकित तार प्रदान करने के लिए छेड़छाड़ की जा सकती है। टेक्स्ट मैनिपुलेशन का उपयोग करके, स्ट्रिंग को पार्स किया जाता है। वैकल्पिक रूप से, मूल्य उचित प्रकारों में डाले जाते हैं।

संबंधित मुद्दे