Domanda

Sto riscontrando un problema con MySQL quando faccio un join di due tabelle e filtrando usando per queste due tabelle.

Supponiamo che i miei tavoli siano così:

Prodotti:

id | Name
1  | Product 1
2  | Product 2
3  | Product 3

Recensioni:

Name     | Product_id | score
Review 1 | 1          | 10000

La mia ipotesi migliore è stata la seguente, ma non funziona:

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;

E vorrei ottenere i prodotti che hanno un punteggio di 0, nel senso che non sono stati rivisti. Sento che questo dovrebbe essere facile, ma non riesco a capire.

È stato utile?

Soluzione

Sembra che tu voglia prodotti che si presentano nella tabella "Prodotti" ma non nella tabella "Recensioni". Forse dai un'occhiata SQL - Trova record da una tabella che non esistono in un'altra?

In alternativa, la sostituzione del tuo join interner con un join a sinistra potrebbe funzionare.

Altri suggerimenti

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;

"Recensioni". "Empire_id" = "Products". "Id"

Dovrebbe essere "recensioni". "Product_id" = "Products". "Id"

In realtà il tuo gruppo di dovrebbe avere tutto il nome del tuo campo dal prodotto

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top