Selecting two counts on two joins in one query
create table Autorzy(ID int, imie varchar, nazwisko varchar);
create table Wydawnictwa(ID int, nazwa varchar, adres varchar, tel varchar);
create table Ksiazki(ID int, ISBN bigint, wydawnictwo_id int, data date, ilosc int, tytul varchar);
create table KsiazkaAutor(ID int, autor_id int, ksiazka_id int);
create table Recenzje (id int, tresc varchar, autor_id int, ksiazka_id int);
I can do:
select a.imie, a.nazwisko, count(ka.id) as IloscKsiazek
from autorzy a
left join KsiazkaAutor ka on a.id=ka.autor_id
group by a.imie, a.nazwisko;
to select count from KsiazkaAutor
or
select a.imie, a.nazwisko, count(r.id) as IloscRecenzji
from autorzy a
left join Recenzje r on a.id=r.autor_id
group by a.imie, a.nazwisko;
to select count from Recenzje .
How can I get both counts in one SELECT?
EDIT: 1st select:
"Bolesław";"Prus";3
"Adam";"Kowalski";5 "Stephen";"King";3 "Andrzej";"Sapkowski";3 "Władysław";"Reymont";3 "Richard";"Dawkins";3 "Zofia";"Nałkowska";3 "Henryk";"Sienkiewicz";3 "Terry";"Pratchett ";3 "Eliza";"Orzeszkowa";4 "Adam";"Mickiewicz";2 "John R. R.";"Tolkien";5 "Mikołaj";"Kopernik";1 "Leń";"Śmierdzący";0 "Jan";"Nowak";5 "Kamil";"Kowalik";0 "Ignacy";"Krasicki";32nd select:
"Bolesław";"Prus";0
"Adam";"Kowalski";0 "Stephen";"King";0 "Andrzej";"Sapkowski";0 "Władysław";"Reymont";0 "Richard";"Dawkins";0 "Zofia";"Nałkowska";0 "Henryk";"Sienkiewicz";1 "Terry";"Pratchett ";0 "Eliza";"Orzeszkowa";2 "Adam";"Mickiewicz";0 "John R. R.";"Tolkien";0开发者_StackOverflow社区 "Mikołaj";"Kopernik";0 "Leń";"Śmierdzący";0 "Jan";"Nowak";0 "Kamil";"Kowalik";0 "Ignacy";"Krasicki";0your answer:
"Bolesław";"Prus";3;0
"Adam";"Kowalski";5;0 "Stephen";"King";3;0 "Andrzej";"Sapkowski";3;0 "Władysław";"Reymont";3;0 "Richard";"Dawkins";3;0 "Zofia";"Nałkowska";3;0 "Henryk";"Sienkiewicz";3;3 "Terry";"Pratchett ";3;0 "Eliza";"Orzeszkowa";8;8 "Adam";"Mickiewicz";2;0 "John R. R.";"Tolkien";5;0 "Mikołaj";"Kopernik";1;0 "Leń";"Śmierdzący";0;0 "Jan";"Nowak";5;0 "Kamil";"Kowalik";0;0 "Ignacy";"Krasicki";3;0Yes, you can do:
select a.imie, a.nazwisko,
count(ka.id) as IloscKsiazek1,
count(r.id) as IloscKsiazek2
from autorzy a
left join KsiazkaAutor ka on a.id=ka.autor_id
left join Recenzje r on a.id=r.autor_id
group by a.imie, a.nazwisko;
You can also try distinct
keyword in the count
clause:
select a.imie, a.nazwisko,
count(distinct ka.id) as IloscKsiazek1,
count(distinct r.id) as IloscKsiazek2
from autorzy a
left join KsiazkaAutor ka on a.id=ka.autor_id
left join Recenzje r on a.id=r.autor_id
group by a.imie, a.nazwisko;
精彩评论