无法提供代码来回答此查询。

问题描述 投票:0回答:2

SQL> select * from displayed_on;

    ID NAME

     2 History of Art
     4 History of Art
     1 Berserk Charity
     5 Berserk Charity

SQL> select * from Art_Object;

    ID YEAR                      TITLE                     DES                       A_NAME

     1 1890                      Old Man                   An old man in the dark    van Gogh
     2 1894                      Cat                       White cat in black canvas van Gogh
     3 1853                      Monalisa                  Smiling woman             Leonardo
     4 1888                      The meeting               Two men talking           Picaso
     5 2017                      The crimson stone         Group of characters       Omar

SQL>

他们问我的问题是(显示现在每位艺术家展出的艺术品的数量。)展出意味着他们在“displayed_on”表中。

mysql sql sql-server database join
2个回答
2
投票

只是JOIN这两个表与group by和count:

SELECT
  o1.A_Name,
  COUNT(COALESCE(o2.ID, 0)) AS TotalNOfObjects
FROM Art_Object as o1
LEFT JOIN displayed_on AS o2 ON o1.ID = o2.ID
GROUP BY o1.A_Name;

Results

|   A_Name | TotalNOfObjects |
|----------|-----------------|
| Leonardo |               1 |
|     Omar |               1 |
|   Picaso |               1 |
| van Gogh |               2 |

0
投票

答案是:

select count(ID), A_NAME 
from Art_Object 
where ID in (select ID from displayed_on) group by (A_NAME);
© www.soinside.com 2019 - 2024. All rights reserved.