2012-11-14 12 views
6

Ho bisogno di qualcuno che mi aiuti con questo problema. La mia testa non vuole pensare dritto oggi.Conta commenti per ogni recensione?

Quindi, ho una tabella denominata "recensioni" e un'altra denominata "commenti". In ogni tabella, ho una colonna chiamata "amne_id". Ciò farebbe in modo che potessi collegare i commenti alla recensione corretta.

Ora, nella mia prima pagina, ho semplicemente ottenere tutti i Opinione con il codice:

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

Quello che voglio è quello di contare quanti commenti ogni valutazione per il prodotto ha. Ma non ho idea di come. Suppongo che forse dovrei usare JOIN e num_rows()?

Si prega di chiedere se non capisco, quindi posso spiegare meglio.

Buona giornata!

+0

Non so come sarà nel Codeigniter ma il problema è di JOIN SELECT count LIKE'(rec.amne_id) come tot_comments da Opinione come rec ISCRIVITI commenti come com ON rec.amne_id = com.amne_id ' –

risposta

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(); 

dovrebbe darvi l'id Opinione e il commento conta per quell'id.

quindi ciclo:

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

Dovrei sostituire "$ rec = $ this-> db-> get (' recensioni ');" con quello che hai appena scritto? – Zacharias

+0

Fino a voi. Se non vuoi tutti i risultati, sostituiscilo. Se vuoi conservare tutte le recensioni, non sostituirlo. Quello che ho postato ti darà solo un oggetto con recension.anme_id e il conteggio dei commenti per quel anme_id. – stormdrain

+0

Come dovrei stampare il risultato, allora? Utilizzando un ciclo foreach o? Scusa per la mia piccola conoscenza, sono nuovo in Codeigniter :) – Zacharias

0

Non so circa il connettore database in uso, ma in puro SQL (supponendo che la connessione connection recensions.id=comments.anme_id), provate questo:

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

Hm, quando provo questo codice, ho ricevuto un errore. "Hai un errore nella sintassi SQL, controlla il manuale che corrisponde alla tua versione del server MySQL per la sintassi corretta da usare vicino a '*)" – Zacharias

0

Ti piace questa ??

$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; 
} 
Problemi correlati