在一个查询中的两个连接上选择两个计数

发布于 2024-09-29 22:47:29 字数 1985 浏览 3 评论 0原文

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);

我可以这样做:

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;

从 KsiazkaAutor 选择计数

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;

从 Recenzje 选择计数。

如何在一个 SELECT 中获得两个计数?

编辑: 第一个选择:

“Bolesław”;“Prus”;3
"亚当";"科瓦尔斯基";5
“斯蒂芬”;“国王”;3
"安杰伊";"萨普科夫斯基";3
"瓦迪斯瓦夫";"雷蒙特";3
“理查德”;“道金斯”;3
"Zofia";"Nałkowska";3
"亨利克";"显克维奇";3
“特里”;“普拉切特”;3
"伊丽莎";"奥热什科瓦";4
"亚当";"密茨凯维奇";2
“约翰·RR”;“托尔金”;5
"米科瓦伊";"哥白尼";1
"Leń";"Śmierdzący";0
“一月”;“诺瓦克”;5
"卡米尔";"科瓦利克";0
"Ignacy";"Krasicki";3

第二个选择:

"Bolesław";"Prus";0
"亚当";"科瓦尔斯基";0
"斯蒂芬";"国王";0
"安杰伊";"萨普科夫斯基";0
"瓦迪斯瓦夫";"雷蒙特";0
“理查德”;“道金斯”;0
"Zofia";"Nałkowska";0
"亨利克";"显克维奇";1
“特里”;“普拉切特”;0
"伊丽莎";"奥热什科瓦";2
"亚当";"密茨凯维奇";0
"约翰 RR";"托尔金";0
"米科瓦伊";"哥白尼";0
"Leń";"Śmierdzący";0
"一月";"诺瓦克";0
"卡米尔";"科瓦利克";0
"Ignacy";"Krasicki";0

您的答案:

"Bolesław";"Prus";3;0
"亚当";"科瓦尔斯基";5;0
"斯蒂芬";"国王";3;0
"安杰伊";"萨普科夫斯基";3;0
"瓦迪斯瓦夫";"雷蒙特";3;0
"理查德";"道金斯";3;0
"Zofia";"Nałkowska";3;0
"亨利克";"显克维奇";3;3
“特里”;“普拉切特”;3;0
"伊丽莎";"奥尔泽什科瓦";8;8
"亚当";"密茨凯维奇";2;0
"约翰 RR";"托尔金";5;0
"米科瓦伊";"哥白尼";1;0
"Leń";"Śmierdzący";0;0
"一月";"诺瓦克";5;0
"卡米尔";"科瓦利克";0;0
"伊格纳西";"克拉斯基";3;0

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";3

2nd 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
"Mikołaj";"Kopernik";0
"Leń";"Śmierdzący";0
"Jan";"Nowak";0
"Kamil";"Kowalik";0
"Ignacy";"Krasicki";0

your 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;0

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小嗲 2024-10-06 22:47:29

是的,您可以这样做:

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;

您还可以在 count 子句中尝试 distinct 关键字:

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;

Yes, 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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文