2012-11-14 16 views
6

मुझे इस समस्या के साथ मेरी मदद करने के लिए किसी की आवश्यकता है। मेरा सिर आज सीधे सोचना नहीं चाहता है।प्रत्येक पाठ के लिए टिप्पणियों की गणना करें?

तो, मेरे पास "रिकेंशन" नामक एक टेबल है, और दूसरा नाम "टिप्पणियां" है। प्रत्येक तालिका में, मेरे पास "amne_id" नामक कॉलम है। यह ऐसा करेगा जिससे मैं टिप्पणियों को सही recension से जोड़ सकूं।

अब, मेरे प्रथम पृष्ठ पर, मैं बस सभी recensions कोड के साथ मिलती है:

$rec = $this->db->get('recensions'); 

क्या मैं चाहता हूँ कितनी सारी टिप्पणियां प्रत्येक recension है गिनती करने के लिए है। लेकिन मुझे नहीं पता कि कैसे। मुझे लगता है कि मुझे जॉइन और num_rows() का उपयोग करना चाहिए?

कृपया पूछें कि क्या आप समझ में नहीं आते हैं, इसलिए मैं बेहतर समझा सकता हूं।

एक अच्छा दिन है!

+0

मैं इसे कैसे Codeigniter में हो जाएगा पता नहीं है, लेकिन की तरह 'का चयन गणना (rec.amne_id) शामिल हों recensions से tot_comments के रूप में आरईसी के रूप में पर rec.amne_id = com.amne_id कॉम के रूप में टिप्पणी में शामिल हों समस्या है ' –

उत्तर

2
$this->db->select('COUNT(*) as count, recensions.anme_id as recension_id') 
->from('recensions') 
->join('comments','recensions.anme_id = comments.anme_id','left') 
->group_by('anme_id'); 
$result = $this->db->get(); 

आप recensions आईडी और टिप्पणी देना चाहिए उस आईडी के लिए गिनती है।

तो पाश:

foreach($result->result() as $row){ 
    echo "Recension id $row->recension_id has $row->count comments<br />"; 
} 
+0

के उपयोग के लिए सही वाक्यविन्यास के लिए आपके MySQL सर्वर संस्करण से मेल खाता है, क्या मुझे "$ rec = $ this-> db-> get (' recensions ' '); " क्या आपने अभी लिखा है? – Zacharias

+0

आप तक। यदि आप सभी परिणामों को नहीं चाहते हैं तो इसे प्रतिस्थापित करें। यदि आप सभी पेंशन रखना चाहते हैं, तो इसे प्रतिस्थापित न करें। जो मैंने पोस्ट किया है वह आपको recension.anme_id और उस anme_id के लिए टिप्पणियों की गिनती के साथ एक ऑब्जेक्ट देगा। – stormdrain

+0

तब मुझे परिणाम कैसे मुद्रित करना चाहिए? एक foreach-loop का उपयोग करना या? मेरे छोटे ज्ञान के लिए खेद है, मैं कोडिनेटर में नया हूँ :) – Zacharias

0

मैं डेटाबेस कनेक्टर प्रयोग कर रहे हैं के बारे में पता नहीं है, लेकिन शुद्ध एसक्यूएल में (यह मानते हुए connection recensions.id=comments.anme_id कनेक्शन), इस प्रयास करें:

SELECT COUNT(comments.id), anme_id 
FROM recensions 
LEFT JOIN comments on comments.anme_id=recensions.id 
GROUP BY anme_id 
+0

एचएम, जब मैं इस कोड को आजमाता हूं, तो मुझे एक त्रुटि मिली। "आपको अपने एसक्यूएल सिंटैक्स में एक त्रुटि है; मैन्युअल रूप से '*)" – Zacharias

0

इस तरह ??

$sql = mysql_query("SELECT * FROM recensions"); 
while($row = mysql_fetch_array($sql)){ 
$amne_id = $row{"amne_id"}; 
$sql2 = mysql_query("SELECT * FROM comments WHERE amne_id='$amne_id'"); 
$total_comments = mysql_num_rows($sql2); 
echo $total_comments; 
}