首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询-连接两个表

SQL查询-连接两个表
EN

Stack Overflow用户
提问于 2017-12-12 21:05:14
回答 1查看 77关注 0票数 2

我有两张桌子

表1 -名为Artista (艺术家),有身份证,名字,第一年,第二年.

代码语言:javascript
复制
    ID NAME                                                    year1      year2 COUNTRY
代码语言:javascript
复制
    41 Filipe Nobrega                                           2001       2051 Portugal             
    42 Bernardo Morais                                          2010       2060 Portugal             
    43 Fernando Evora                                           2013       2070 Portugal             
    44 Florenzo Giovanni                                        2003       2047 Italia               
    45 Tiago Alves                                              1980       1990 Portugal             
    46 Rui Gonzales                                             1975       1995 Espanha              
    47 Jose Almeida                                             1800       1876 Portugal             
    48 Jhon Snow                                                1900       1940 Winterfell           
    49 test                                                     2001       2020 Espanha

表2 -称为autoria (作者),具有艺术品的ID和艺术家的ID,它还具有艺术类型(绘画、音乐、雕塑.)

代码语言:javascript
复制
  ART   ARTIST   TYPE_OF_ART       
代码语言:javascript
复制
   121         41 Pintura      
   122         41 Musica       
   123         42 Pintura      
   124         42 Cinema       
   125         42 Literatura   
   126         43 Teatro       
   127         43 Literatura   
   128         43 Danca        
   129         43 Arte_digital 
   130         43 Pintura      
   131         44 Pintura      
   132         44 Cinema       
   133         44 Pintura      
   134         45 Cinema       
   135         45 Literatura   
   136         46 Cinema       
   137         46 Literatura   
   138         46 Literatura   
   139         47 Arte_digital 
   140         47 Pintura      
   141         47 Teatro       
   142         48 Cinema       

问题是:让所有创作了少于2件不同艺术品的艺术家。

其结果应该是:

pieces - 41他有2件艺术品

TIAGO ALVES - 45他有2件艺术品

约翰斯诺- 48他有一件艺术品

测试- 49他有0

这就是我得到的:

SELECT DISTINCT A.name, A.id FROM artista A, autoria AUT WHERE AUT.artist = A.id GROUP BY(A.name, A.id) HAVING (COUNT(*) <= 2);

除了测试之外,它还返回上述所有内容。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-12 21:09:02

此查询执行INNER JOIN。您需要一个OUTER JOIN,因为autoria可能而不是包含任何连接到Artista的记录。如果它不包含连接的记录,那么INNER JOIN就不包括结果集中的记录。将查询更改为使用OUTER JOIN

代码语言:javascript
复制
SELECT DISTINCT A.name, A.id
  FROM artista A LEFT OUTER JOIN autoria AUT ON AUT.artist = A.id
GROUP BY(A.name, A.id)
HAVING (COUNT(*) <= 2);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47781507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档