我有两张桌子
表1 -名为Artista (艺术家),有身份证,名字,第一年,第二年.
ID NAME year1 year2 COUNTRY 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,它还具有艺术类型(绘画、音乐、雕塑.)
ART ARTIST TYPE_OF_ART 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);
除了测试之外,它还返回上述所有内容。
发布于 2017-12-12 21:09:02
此查询执行INNER JOIN。您需要一个OUTER JOIN,因为autoria可能而不是包含任何连接到Artista的记录。如果它不包含连接的记录,那么INNER JOIN就不包括结果集中的记录。将查询更改为使用OUTER JOIN
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);https://stackoverflow.com/questions/47781507
复制相似问题