Ho la seguente tabella db e vorrei poter contare l'istanza di vendita di determinati prodotti per venditore.Colonne di conteggio MySQL su un valore specifico
|------------|------------|------------|
|id |user_id |product_id |
|------------|------------|------------|
|1 |1 |2 |
|2 |1 |4 |
|3 |1 |2 |
|4 |2 |1 |
|------------|------------|------------|
vorrei in grado di creare un set di risultati come il seguente;
|------------|-------------|------------|------------|------------|
|user_id |prod_1_count |prod_2_count|prod_3_count|prod_4_count|
|------------|-------------|------------|------------|------------|
|1 |0 |2 |0 |1 |
|2 |1 |0 |0 |0 |
|------------|-------------|------------|------------|------------|
Sto creando i grafici con questi dati, e ancora una volta (come prima di oggi) non sono in grado di contare i totali delle colonne. Ho provato;
SELECT user_id,
(SELECT count(product_id) FROM sales WHERE product_id = 1) AS prod_1_count,
(SELECT count(product_id) FROM sales WHERE product_id = 2) AS prod_2_count,
(SELECT count(product_id) FROM sales WHERE product_id = 3) AS prod_3_count,
(SELECT count(product_id) FROM sales WHERE product_id = 4) AS prod_4_count
FROM sales GROUP BY user_id;
Posso capire perché questo non funziona, perché per ogni parentesi selezionare l'user_id non corrisponde al user_id esterna nella principale SELECT.
Qualcuno può darmi una mano qui?
ringrazia
Grazie Ike, questa è stata la soluzione più veloce di tutte. Grazie :) –
Non puoi semplicemente fare 'sum (product_id = 1)'? 'product_id = 1' è un'espressione booleana; restituirà naturalmente 1 o 0 senza il caso di commutazione. – mpen
@ Mark sì che funzionerebbe pure, e potrebbe essere nominalmente più veloce, ma trovo la soluzione come scritta per essere più leggibile. –