MySQL JOINT, SOMMED, ayant, groupe par.Ne peut pas comprendre
-
13-11-2019 - |
Question
Je dispose d'un problème avec MySQL lors de la jointure de deux tables et de filtrage à l'aide de ces deux tables.
Supposons que mes tables ressemblent à ceci:
Produits:
id | Name
1 | Product 1
2 | Product 2
3 | Product 3
Avis:
Name | Product_id | score
Review 1 | 1 | 10000
Ma meilleure hypothèse était la suivante, mais cela ne fonctionne pas:
SELECT "products".*, sum("reviews".score) FROM "products" INNER JOIN "reviews" ON "reviews"."empire_id" = "products"."id" GROUP BY products.id HAVING sum("reviews".score)=0;
Et j'aimerais obtenir les produits qui ont un score de 0 , ce qui signifie qu'ils n'ont pas été examinés.Je me sens comme ça devrait être facile, mais je ne peux pas sembler comprendre.
La solution
On dirait que vous voulez des produits qui apparaissent dans la table "Produits" mais pas la table "Avis".Peut-être jeter un coup d'œil à SQL - Rechercher des enregistrements deune table qui n'existe pas dans un autre ?
Alternativement, le remplacement de votre join interne avec une jointe gauche pourrait fonctionner.
Autres conseils
SELECT products.id, products.name, sum("reviews".score)
FROM products
LEFT JOIN reviews ON reviews.product_id = products.id
GROUP BY products.id, products.name
HAVING sum(reviews.score)=0;
"Avis". "Empire_id"="Produits". "ID"
devrait être "Avis". "Produit_id"="Produits". "ID"
En fait, votre groupe en doit avoir tout votre nom de champ du produit