mysql filtrowanie zliczania na podstawie innej kolumny

0

Tabela ma 3 kolumny: aktywnosc, baza, id_uzytkownik_f
aktywnosc przyjmuje wartości 0 lub 1
baza ma wartości 0,1 lub 2
Zliczam użytkowników, którzy mają więcej niż jedną "jedynkę" dla aktywnosc i jest ok.

Obecne zapytanie:

select sum(aktywnosc),id_uzytkownik_f,(select imie from uzytkownik where id_uzytkownik=id_uzytkownik_f) 
from tabela
group by id_uzytkownik_f
having sum(aktywnosc)>1

W jaki sposób zmodyfikować zapytanie, by sumowało jedynie tych, którzy mają baza=0?

1
  1. O JOINach nie słyszał ty? (mam na myśli ten bezsensowny select w środku)
  2. Rozwiązanie Twojego problemu to pomiędzy linię 'FROM tabela' a linię 'GROUP BY id_uzytkownik_f' wstawić linię 'WHERE baza=0'
0
  1. Słyszał, ale w tym wypadku nie używał, bo łączenie zwraca invalid ze względu na group by
  2. Faktycznie tak próbowałem przed napisaniem tematu ale miałem jakiś błąd i zaniechałem testów, może literówka była w nazwie....

Dzięki za pomoc.

1

Bo zapewne chciałeś wypisać imię, a grupowałeś po id_uzytkownik_f. Rozwiązanie to grupowanie po obu kolumnach.
Spróbuj tak zrobić i do tego wykorzystać klauzulę WHERE. Jak zwróci błędy to pokaż zapytanie, choć nie powinno. Sprawdziłem i działa.

Na marginesie, jaki wpływ mają na siebie kolumny aktywność i baza?

0

Rzeczywiście, cenna nauka dla mnie z tym grupowaniem. Dziękuje.

Jeśli chodzi o wpływ kolumny baza na aktywność, w "bazie" przechowuje informację czy użytkownik jest w fazie rekrutacji, roboczej lub archiwum, natomiast aktywność określa czy ma aktywny moduł, modułów może mieć kilka, może też być w różnych "bazach".

1 użytkowników online, w tym zalogowanych: 0, gości: 1