Opinie:
CREATE TABLE `opinie` (
`id_opinie` INT(11) NOT NULL AUTO_INCREMENT,
`id_produkt_opinie` INT(11) NULL DEFAULT NULL,
`opinia_opinie` VARCHAR(255) NULL DEFAULT NULL,
`ocena_opinie` VARCHAR(5) NULL DEFAULT NULL,
`aktywny_opinie` ENUM('Y','N') NULL DEFAULT 'N',
PRIMARY KEY (`id_opinie`),
UNIQUE INDEX `id_opinie` (`id_opinie`)
)
产品:
CREATE TABLE `produkt` (
`id_produkt` INT(10) NOT NULL AUTO_INCREMENT,
`kod` VARCHAR(50) NOT NULL,
`tytul` VARCHAR(100) NOT NULL,
`opis` TEXT NOT NULL,
PRIMARY KEY (`id_produkt`),
UNIQUE INDEX `id_produkt` (`id_produkt`)
)
SELECT *, AVG(ocena_opinie) AS review_avg FROM produkt
LEFT JOIN opinie ON opinie.id_produkt_opinie = produkt.id_produkt AND aktywny_opinie = 'Y';
产品:
id | name | img |
________________________________________
1 | product1 | product1.jpg |
2 | product2 | product2.jpg |
3 | product3 | product3.jpg |
评论:
id | rating | product_id | activ |
________________________________________
1 | 4.0 | 1 | Y
2 | 5.0 | 1 | Y
3 | 3.0 | 1 | Y
4 | 4.0 | 2 | Y
5 | 5.0 | 2 | Y
Product3 id 3 NULL
我现在只显示一条记录,如何为每个产品展示一些意见和AVG
答案 0 :(得分:0)
像这样,使用子查询来获得平均值: -
SELECT Produkt.id_produkt,
Produkt.kod,
Produkt.tytul,
Produkt.opis,
opinie.id_opinie,
opinie.id_produkt_opinie,
opinie.opinia_opinie,
opinie.ocena_opinie,
opinie.aktywny_opinie,
review_avg
FROM produkt
LEFT JOIN opinie
ON opinie.id_produkt_opinie = produkt.id_produkt
AND aktywny_opinie = 'Y'
INNER JOIN
(
SELECT produkt.id_produkt , AVG(ocena_opinie) AS review_avg
FROM produkt
LEFT JOIN opinie
ON opinie.id_produkt_opinie = produkt.id_produkt
AND aktywny_opinie = 'Y'
GROUP BY produkt.id_produkt
) Sub1
ON Sub1.id_produkt = produkt.id_produkt
答案 1 :(得分:0)
cat1 Works TY:)
SELECT *
FROM produkt
LEFT JOIN pojemnosc ON pojemnosc.id_pojemnosc = produkt.id_pojemnosc
LEFT JOIN producent ON producent.id_producent = produkt.id_producent
LEFT JOIN kategoria ON kategoria.id_kategoria = produkt.id_kategoria
LEFT JOIN opinie
ON opinie.id_produkt_opinie = produkt.id_produkt
AND aktywny_opinie = 'Y'
INNER JOIN
(
SELECT produkt.id_produkt , AVG(ocena_opinie) AS review_avg , COUNT(ocena_opinie) AS count
FROM produkt
LEFT JOIN opinie
ON opinie.id_produkt_opinie = produkt.id_produkt
AND aktywny_opinie = 'Y'
GROUP BY produkt.id_produkt
) Sub1
ON Sub1.id_produkt = produkt.id_produkt
WHERE nazwa_kategoria_mr = 'cat1'
GROUP BY produkt.id_produkt
ORDER BY produkt.id_produkt ASC LIMIT 2