Tomasz Dzioba

Tomasz Dzioba wszystkiego po
trochu

Temat: [MySQL] Zadać zapytanie do wyników z poprzedniego zapytania.

Witam,

Potrzebuję jakąś wskazówkę lub gotowe rozwiązanie do następującego problemu.

Muszę pobrać pewne dane z bazy danych, a VIEW nie mogę utworzyć (uprawnienia).
1. SELECT * FROM tabela GROUP BY pole1
2(na wynikach z zapytania 1). SELECT count(osoba), osoba FROM tabela GROUP BY osoba

Czy jest takie rozwiązanie możliwe ?
Łukasz Schabek

Łukasz Schabek Architekt Rozwiązań

Temat: [MySQL] Zadać zapytanie do wyników z poprzedniego zapytania.

Może tak:
SELECT count(osoba), osoba
FROM (
SELECT * FROM tabela GROUP BY pole1
) x
GROUP BY osoba

Ale co grupuje GROUP BY pole1? Próbujesz wyciągnąć DISTINCT?
Tomasz Dzioba

Tomasz Dzioba wszystkiego po
trochu

Temat: [MySQL] Zadać zapytanie do wyników z poprzedniego zapytania.

osoba - pracownik, który 'analizował' treść przelewu
pole - treść przelewu

Zapytanie ma na celu podsumowanie wykazać ile indywidualnych przekazów pracownik 'przeanalizował'

Dlatego też 'GROUP BY pole' - wtedy mam tabelę wszystkich tytułów wpłat, a następnie sumowanie ile razy wystąpił dany pracownik.
Irek Słonina

Irek Słonina programowanie, bazy
danych i linuksy

Temat: [MySQL] Zadać zapytanie do wyników z poprzedniego zapytania.

Tomasz Dzioba:
osoba - pracownik, który 'analizował' treść przelewu
pole - treść przelewu

Zapytanie ma na celu podsumowanie wykazać ile indywidualnych przekazów pracownik 'przeanalizował'

Dlatego też 'GROUP BY pole' - wtedy mam tabelę wszystkich tytułów wpłat, a następnie sumowanie ile razy wystąpił dany pracownik.

Tak powinno być zgrabniej:


select osoba, count(distinct(pole1)) from tabela group by osoba;
Irek Słonina edytował(a) ten post dnia 07.10.10 o godzinie 12:29
Tomasz Dzioba

Tomasz Dzioba wszystkiego po
trochu

Temat: [MySQL] Zadać zapytanie do wyników z poprzedniego zapytania.

Proszę poprawcie mnie jeśli się mylę. W wyniku dostaję dwie kolumny. W jednej jest pracownik, a w drugiej ilość przelewów, które zostały sprawdzone przez niego. Prawda?
Jeżeli prawda to również prawdą powinno być, że kiedy zsumuję ilość przelewów pracowników dostać powinienem wielkość wierszy z samego zapytania:
SELECT DISTINCT pole1 FROM tabela;
lub
SELECT pole1 FROM tabela GROUP BY pole1
Natomiast teraz dostaję wyniki rozbierzne o 4 pola.

konto usunięte

Temat: [MySQL] Zadać zapytanie do wyników z poprzedniego zapytania.

Tomasz Dzioba:
Proszę poprawcie mnie jeśli się mylę.

"Liczba przelewow" i "rozbiezne" ;)

Jesli chodzi o zapytanie, to obstawiam taka wartosc pole1, ktora ma przypisana wiecej niz jedna osobe.
Tomasz Dzioba

Tomasz Dzioba wszystkiego po
trochu

Temat: [MySQL] Zadać zapytanie do wyników z poprzedniego zapytania.

pole1 nie ma więcej niż jednego użytkownika.
Irek Słonina

Irek Słonina programowanie, bazy
danych i linuksy

Temat: [MySQL] Zadać zapytanie do wyników z poprzedniego zapytania.

Tomasz Dzioba:
Proszę poprawcie mnie jeśli się mylę. W wyniku dostaję dwie kolumny. W jednej jest pracownik, a w drugiej ilość przelewów, które zostały sprawdzone przez niego. Prawda?

Prawda.

Jeżeli prawda to również prawdą powinno być, że kiedy zsumuję ilość przelewów pracowników dostać powinienem wielkość wierszy z samego zapytania:
SELECT DISTINCT pole1 FROM tabela;
lub
SELECT pole1 FROM tabela GROUP BY pole1
Natomiast teraz dostaję wyniki rozbierzne o 4 pola.

Nie musi być sumą.

Dla wartości:

pole1,osoba
wartosc1,michal
wartosc2,michal
wartosc1,romek
wartosc3,romek

Dla

select osoba, count(distinct(pole1)) from tabela group by osoba;


Dostaniesz wynik:

michal,2
romek,2

A dla

SELECT DISTINCT pole1 FROM tabela;


Dostaniesz wynik:
3
Tomasz Dzioba

Tomasz Dzioba wszystkiego po
trochu

Temat: [MySQL] Zadać zapytanie do wyników z poprzedniego zapytania.

zapytanie które mi daje w pełni satysfakcjonujące wyniki to:

SELECT count( osoba ) AS Klik, osoba
FROM (

SELECT pole1 AS Tresc, IF( osoba IS NULL , '666', osoba ) AS osoba
FROM `tabela`
GROUP BY pole1
)TMP
GROUP BY osoba



Wyślij zaproszenie do