संपादन और टिप्पणी प्रतिक्रिया से, मुझे लगता है कि आप जिस प्रश्न की तलाश कर रहे हैं, वह यहां है... सबसे भीतरी पूर्व-प्रश्न को पोस्ट मिलते हैं और पोस्ट की शुरुआत किसने की, टिप्पणियां किसने कीं और किसने टिप्पणियां पोस्ट कीं। यह आंतरिक क्वेरी भी सबसे हाल की टिप्पणियों के साथ शीर्ष प्रति पोस्ट आईडी पर पूर्व-क्रमबद्ध है। उस के परिणाम का उपयोग करते हुए, मैं sql चर (@variables) में शामिल हो रहा हूं ताकि @varRow हर बार एक नई टिप्पणी में वृद्धि हो और हर बार एक पोस्ट आईडी में परिवर्तन होने पर 1 पर रीसेट हो जाए (इसलिए पोस्ट आईडी द्वारा आंतरिक प्रीक्वेरी ऑर्डर पहले ) अंत में, HAVING क्लॉज का उपयोग करके टिप्पणी की @varRow गिनती <6 प्रत्येक पोस्ट के अधिकतम 5 पर प्राप्त होगी।
यदि आप उन पोस्ट को सीमित करना चाहते हैं जिन्हें आप पुनर्प्राप्त करने का प्रयास कर रहे हैं, तो मैं INNER पर WHERE क्लॉज (जैसे दिनांक/समय यदि उपलब्ध हो) लागू करूंगा जो "प्रीक्वेरी" उत्पन्न करता है।
select straight_join
PreQuery.*,
@varRow := if( @LastPost = PreQuery.PostID, @varRow +1, 1 ) CommentRow,
@LastPost := PreQuery.PostID PostID2
from
( select
posts.id PostID,
posts.body,
posts.CreatedAt,
u1.id UserID,
u1.DisplayName NameOfPoster,
c.id,
c.userid CommentUserID,
c.text CommentText,
u2.DisplayName CommentUserName
from
posts
join users u1
on posts.ownerUserID = u1.id
LEFT JOIN comments c
on posts.id = c.PostID
join users u2
on c.userid = u2.id
where
posts.id = TheOneParentIDYouWant
OR posts.parentid = TheOneParentIDYouWant
order by
posts.ID,
c.id desc ) PreQuery,
(select @varRow := 0, @LastPost = 0 ) SQLVars
having
CommentRow < 6
order by
PreQuery.postid,
CommentRow
--- संपादित करें --- प्रति टिप्पणी मुझे लगता है कि आपका क्या मतलब है जिससे "पैरेंट पोस्ट" टिप्पणियां जुड़ी हुई हैं क्योंकि उनके पास सीधे पोस्ट आईडी है। चूंकि सबसे आंतरिक क्वेरी बोर्ड भर में सभी तत्वों/तालिकाओं को जोड़ती है, सभी सवारी के लिए साथ आ रहे हैं...
Post -> User (to get posting user name )
Post -> Comment (on Common Post ID -- left joined)
Comment -> User ( to get commenting user name)
एक बार जब यह सब हो जाता है और सामान्य पोस्ट आईडी द्वारा क्रमबद्ध किया जाता है और सबसे हालिया टिप्पणी शीर्ष पर क्रमबद्ध होती है, तो मैं सभी लौटाई गई पंक्तियों के खिलाफ @vars लागू करता हूं। HAVING क्लॉज़ किसी भी टिप्पणी को हटा देगा जहाँ उसका क्रम उस 5 से परे है जिसे आप ढूंढ रहे थे।