अपनी डेटाबेस संरचना को नहीं जानते, इसे कुछ इस तरह दिखना चाहिए। ध्यान दें कि आपको *
. को बदलना चाहिए कॉलम की अधिक स्पष्ट सूचियों वाले वर्ण जिनकी आपको वास्तव में आवश्यकता है।
SELECT p.*, c.*, u.* FROM posts p
LEFT JOIN comments c ON c.post_id = p.id
LEFT JOIN users u ON u.id = p.author_id
ध्यान दें कि यदि आप केवल गणना, योग और इस तरह की चीजें प्राप्त करने का प्रयास कर रहे हैं, तो उस जानकारी में से कुछ को कैश करना एक अच्छा विचार है। उदाहरण के लिए, आप प्रत्येक क्वेरी को गिनने के बजाय पोस्ट टेबल में टिप्पणियों की संख्या को कैश करना चाह सकते हैं। टिप्पणी जोड़ते/हटाते समय केवल टिप्पणियों की संख्या को गिनें और अपडेट करें।
संपादित करें: एहसास हुआ कि आप भी प्रत्येक टिप्पणी के लिए उपयोगकर्ता डेटा संलग्न करना चाहते हैं। आप एक ही टेबल में एक से अधिक बार शामिल हो सकते हैं लेकिन यह बदसूरत हो जाता है। यह वास्तव में महंगी क्वेरी में बदल सकता है। मैं एक उदाहरण भी शामिल कर रहा हूं कि कैसे कॉलम को उपनाम दिया जाए ताकि यह कम भ्रमित करने वाला हो:
SELECT p.*, c.*, u.name as post_author, u2.name as comment_author FROM posts p
LEFT JOIN comments c ON c.post_id = p.id
LEFT JOIN users u ON u.id = p.author_id
LEFT JOIN users u2 ON u2.id = c.author_id