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.

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top