Mam następującą tabelę db i chciałbym móc policzyć wystąpienie sprzedaży niektórych produktów na jednego sprzedawcę.Liczba kolumn MySQL o określonej wartości
|------------|------------|------------|
|id |user_id |product_id |
|------------|------------|------------|
|1 |1 |2 |
|2 |1 |4 |
|3 |1 |2 |
|4 |2 |1 |
|------------|------------|------------|
Chciałbym utworzyć zestaw wyników, jak poniżej;
|------------|-------------|------------|------------|------------|
|user_id |prod_1_count |prod_2_count|prod_3_count|prod_4_count|
|------------|-------------|------------|------------|------------|
|1 |0 |2 |0 |1 |
|2 |1 |0 |0 |0 |
|------------|-------------|------------|------------|------------|
Tworzę wykresy z tymi danymi i jeszcze raz (tak jak dzisiaj) nie jestem w stanie zliczyć sum kolumn. Próbowałem;
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;
mogę zrozumieć, dlaczego to nie działa, ponieważ za każdy nawias SELECT user_id nie pasuje do zewnętrznego user_id w głównym SELECT.
Czy ktoś może mi pomóc?
dziękuje
Dzięki Ike, to był najszybszy ze wszystkich rozwiązań. Dziękuję :) –
Nie możesz po prostu zrobić 'sum (product_id = 1)'? 'product_id = 1' jest wyrażeniem boolowskim; to naturalnie zwróci 1 lub 0 bez skrzynki przełącznika. – mpen
@ Mark tak, że również będzie działać, i może być nominalnie szybszy, ale uważam, że rozwiązanie jest napisane jako bardziej czytelne. –