Sunday 15 August 2010

mysql - SQL: Select latest thread and latest post, grouped by forum, ordered by latest post -


मैं

  • नवीनतम धागा प्राप्त करने की कोशिश कर रहा हूं प्रत्येक मंच
  • नवीनतम पोस्ट (आईडी, थ्रेड_आईडी, टाइमस्टैम्प, लेखक_आईडी) (आईडी, नाम)
  • नवीनतम पोस्ट के द्वारा आदेश दिया गया , थ्रेड के सृजनात्मक पदार्थ से अप्रत्यक्ष।

    क्यों? < / Strong>

    मैं इस तरह से विवरण प्रदर्शित करने में सक्षम होना चाहता हूं:

      "फ़ोरम का नवीनतम उत्तर फोरम_आईडी प्रश्न $ धागा_आईडी पर दिया गया था। : $ post_id "  
      के रूप में forum_id f.id का चयन करें, f.name FORUM_NAME के ​​रूप में, के रूप में thread_id, के रूप में thread_topic t.topic t.id, के रूप में t.ts thread_timestamp, p.id post_id के रूप में, p.content POST_CONTENT के रूप में, च मंचों, धागे टी, पदों पी कहां f.id = t.forum_id और t.id = p.thread_id ग्रुप f.id आदेश द्वारा से post_timestamp के रूप में p.ts द्वारा पी.टी.   

    कोई भी सलाह, इच्छित परिणाम प्राप्त करने के लिए एसक्यूएल को कैसे बदलना है संभव के रूप में NT? मैं उप-वर्गों से बचने की कोशिश कर रहा हूं लेकिन मैं खुले दिमाग का हूँ!

    धन्यवाद अग्रिम!

    चूंकि MySQL विंडो फ़ंक्शंस का समर्थन नहीं करता है, मुझे नहीं लगता कि यह एक सबक्व्यरी के बिना करने का कोई तरीका है:

      SELECT f.id AS फोरम_आईडी, f.name AS FORUM_NAME, t.id के रूप में thread_id, t.topic के रूप में thread_topic, t.ts thread_timestamp के रूप में, p.id post_id के रूप में, p.content POST_CONTENT के रूप में, मंचों से post_timestamp के रूप में p.ts च JOIN (t2.forum_id का चयन करें, अधिकतम (p2 .ts) के रूप में पद से ts P2 पर p2.thread_id = t2.id ग्रुप t2.forum_id द्वारा धागे t2 शामिल हों) max_p पर f.id = max_p.forum_id पर max_p.ts = p.ts शामिल हों पदों पी एफ पर धागे टी में शामिल हों .id = t.forum_id और p.thread_id = t.id p.ts द्वारा आदेश   

    स्वाभाविक रूप से, नवीनतम परिणाम कैशिंग आप मैक्स बुला के प्रदर्शन दंड के बिना यह कर देना होगा () है, लेकिन सही सूचकांक के साथ, यह एक मुद्दे के ज्यादा होना चाहिए ...

    अद्यतन

    बिना धागे सहित के सबसे संक्षिप्त तरीके स्थिति

      के रूप में forum_id f.id का चयन करें, f.name FORUM_NAME के ​​रूप में, के रूप में thread_id t.id, t.topic के रूप में: के नियम व धागे के बिना मंचों वाम बजाय के एक आंतरिक मिलती मिलती है उपयोग करने के लिए किया जाएगा thread_topic, t.ts thread_timestamp, p.id post_id के रूप में, p.content POST_CONTENT के रूप में, p.ts वाम च मंचों से post_timestamp के रूप में के रूप में शामिल (t2.forum_id का चयन करें, अधिकतम (COALESCE (p2.ts, t2.ts)) के रूप में ts, COUNT धागे से POST_COUNT के रूप में (p2.ts) बायाँ शामिल हों पदों पर P2 t2 p2.thread_id = t2.id t2.forum_id द्वारा समूह) max_p पर f.id = max_p.forum_id बायाँ शामिल हों पदों max_p.ts पर पी = पी .ts बायाँ शामिल हों धागे टी पर f.id = t.forum_id और (max_p.post_count = 0 या p.thread_id = t.id) p.ts द्वारा आदेश    

No comments:

Post a Comment