Einzelnen Beitrag anzeigen
  #1  
Alt 20.07.2011, 09:35:45
bonanza10 bonanza10 ist offline
Anfänger
 
Registriert seit: Jan 2011
Alter: 40
Beiträge: 16
Hilfe mit count bzw. sum

Ich hab eine Tabelle in der Kommentare gespeichert werden, zusätzliche eine Tabelle in der ich speichere ob jemand diesen Kommentar hilfreich findet (so wie bei Amazon)
Die Kommentrae rufe ich so ab:
Code:
SELECT pc.`id_product_comment` , IF( c.id_customer, CONCAT( c.`firstname` , ' ', LEFT( c.`lastname` , 1 ) ) , pc.customer_name ) customer_name, pc.`content` , pc.`grade` , pc.`date_add` , pc.title
FROM `ps_product_comment` pc
LEFT JOIN `ps_customer` c ON c.`id_customer` = pc.`id_customer`
WHERE pc.`id_product` =11
ORDER BY pc.`date_add` DESC
LIMIT 0 , 30
Das klappt so weit ganz gut, ich bekomme meine 3 Datensätze zurück. Nun will ich aber wissen wie viele User einen Kommentar hilfreich fanden, was so aussieht:
Code:
SELECT 
pc.`id_product_comment`, 
sum(if(hp.helpful=1,1,0)) AS helpful,
IF(c.id_customer, CONCAT(c.`firstname`, ' ', LEFT(c.`lastname`, 1)), pc.customer_name) customer_name, 
pc.`content`, 
pc.`grade`, 
pc.`date_add`, 
pc.title 
FROM `ps_product_comment` pc 
LEFT JOIN `ps_customer` c ON c.`id_customer` = pc.`id_customer` 
LEFT JOIN `wr_comment_helpful` hp ON ( pc.`id_product_comment` = hp.`id_product_comment`) 
WHERE pc.`id_product` = 11
ORDER BY pc.`date_add` DESC
Leider stimmt da irgendwas nicht, ich bekomme lediglich noch einen Datensatz zurück.
Pseudo SQL sollte so sein:
Code:
SELECT 
pc.`id_product_comment`, 
ALLE DATENSÄTZE DIE ZUM KOMMENTAR GEHÖREN UND HILFREICH SIND AS helpful,   <--------
ALLE DATENSÄTZE DIE ZUM KOMMENTAR GEHÖREN AS all,                         <---------
IF(c.id_customer, CONCAT(c.`firstname`, ' ', LEFT(c.`lastname`, 1)), pc.customer_name) customer_name, 
pc.`content`, 
pc.`grade`, 
pc.`date_add`, 
pc.title 
FROM `ps_product_comment` pc 
LEFT JOIN `ps_customer` c ON c.`id_customer` = pc.`id_customer` 
LEFT JOIN `wr_comment_helpful` hp ON ( pc.`id_product_comment` = hp.`id_product_comment`)      <-------------------------
WHERE pc.`id_product` = 11
ORDER BY pc.`date_add` DESC
Kann mir jemand einen Tipp geben, ich komm da einfach nicht weiter.
Danke schon mal!
Mit Zitat antworten