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!