Select 在一个查询中选择两个联接的两个计数

Select 在一个查询中选择两个联接的两个计数,select,count,postgresql,Select,Count,Postgresql,我可以做到: 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); crea

我可以做到:

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);
从ksiazkautor中选择计数

从Recenzje中选择计数

如何在一次选择中获得两个计数

编辑: 第一选择:

“Bolesław”;“普鲁士”;3
“亚当”;“科瓦尔斯基”;5
“斯蒂芬”;“国王”;3
“安德烈”;“萨普科夫斯基”;3
“Władysław”;“雷蒙”;3
“理查德”;“道金斯”;3
“佐菲亚”;“纳科夫斯卡”;3
“亨利克”;“锡耶维奇”;3
“特里”;“普拉切特”;3
“伊丽莎”;“Orzeszkowa”;4
“亚当”;“米基维茨”;2
“约翰·R·R.”;“托尔金”;5
“Mikołaj”;“Kopernik”;1
“勒芒”;“米尔德西”;0
“简”;“诺瓦克”;5
“卡米尔”;“科瓦利克”;0
“无知”;“克拉西基”;三,

第二选择:

“Bolesław”;“普鲁士”;0
“亚当”;“科瓦尔斯基”;0
“斯蒂芬”;“国王”;0
“安德烈”;“萨普科夫斯基”;0
“Władysław”;“雷蒙”;0
“理查德”;“道金斯”;0
“佐菲亚”;“纳科夫斯卡”;0
“亨利克”;“锡耶维奇”;1
“特里”;“普拉切特”;0
“伊丽莎”;“Orzeszkowa”;2
“亚当”;“米基维茨”;0
“约翰·R·R.”;“托尔金”;0
“Mikołaj”;“Kopernik”;0
“勒芒”;“米尔德西”;0
“简”;“诺瓦克”;0
“卡米尔”;“科瓦利克”;0
“无知”;“克拉西基”;0

你的回答是:

“Bolesław”;“普鲁士”;3.0
“亚当”;“科瓦尔斯基”;5.0
“斯蒂芬”;“国王”;3.0
“安德烈”;“萨普科夫斯基”;3.0
“Władysław”;“雷蒙”;3.0
“理查德”;“道金斯”;3.0
“佐菲亚”;“纳科夫斯卡”;3.0
“亨利克”;“锡耶维奇”;3.3
“特里”;“普拉切特”;3.0
“伊丽莎”;“Orzeszkowa”;8.8
“亚当”;“米基维茨”;2.0
“约翰·R·R.”;“托尔金”;5.0
“Mikołaj”;“Kopernik”;1.0
“勒芒”;“米尔德西”;0;0
“简”;“诺瓦克”;5.0
“卡米尔”;“科瓦利克”;0;0
“无知”;“克拉西基”;3.0

是的,您可以:

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;
您还可以在
count
子句中尝试
distinct
关键字:

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;
是的,您可以:

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;
您还可以在
count
子句中尝试
distinct
关键字:

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;

@ksogor-基于什么?postgre不支持多个连接?它工作不好。当count(r.id)>0时,它返回count(r.id)等于count(ka.id),否则返回0。@Miko:你说的“工作不好”是什么意思?它不运行吗?它不会产生预期的结果?@pablo-从上面的数据(见编辑至OP)来看,MySQL对计数中的空值有一种奇怪的反应?@ksogor-基于什么?postgre不支持多个连接?它工作不好。当count(r.id)>0时,它返回count(r.id)等于count(ka.id),否则返回0。@Miko:你说的“工作不好”是什么意思?它不运行吗?它不会产生预期的结果?@pablo-从上面的数据(见编辑到操作)来看,MySQL对计数中的空值有一种奇怪的反应?