2016-10-08 7 views
0

私は次の構造を持っている:不平等()

Table Author : 
idAuthor, 
Name 

+----------+-------+ 
| idAuthor | Name | 
+----------+-------+ 
|  1 | Renee | 
|  2 | John | 
|  3 | Bob | 
|  4 | Bryan | 
+----------+-------+ 
Table Publication: 
idPublication, 
Title, 
Type, 
Date, 
Journal, 
Conference 
+---------------+--------------+------+-------------+------------+-----------+ 
| idPublication | Title  | Date | Type  | Conference | Journal | 
+---------------+--------------+------+-------------+------------+-----------+ 
|    1 | Flower thing | 2008 | book  | NULL  | NULL  | 
|    2 | Bees   | 2009 | article  | NULL  | Le Monde | 
|    3 | Wasps  | 2010 | inproceding | KDD  | NULL  | 
|    4 | Whales  | 2010 | inproceding | DPC  | NULL  | 
|    5 | Lyon   | 2011 | article  | NULL  | Le Figaro | 
|    6 | Plants  | 2012 | book  | NULL  | NULL  | 
|    7 | Walls  | 2009 | proceeding | KDD  | NULL  | 
|    8 | Juices  | 2010 | proceeding | KDD  | NULL  | 
|    9 | Fruits  | 2010 | proceeding | DPC  | NULL  | 
|   10 | Computers | 2010 | inproceding | DPC  | NULL  | 
|   11 | Phones  | 2010 | inproceding | DPC  | NULL  | 
|   12 | Creams  | 2010 | proceeding | DPC  | NULL  | 
|   13 | Love   | 2010 | proceeding | DPC  | NULL  | 
+---------------+--------------+------+-------------+------------+-----------+ 

Table author_has_publication : 
Author_idAuthor, 
Publication_idPublication 
+-----------------+---------------------------+ 
| Author_idAuthor | Publication_idPublication | 
+-----------------+---------------------------+ 
|    1 |       1 | 
|    2 |       2 | 
|    3 |       3 | 
|    4 |       4 | 
|    1 |       5 | 
|    2 |       5 | 
|    3 |       5 | 
|    3 |       6 | 
|    4 |       7 | 
|    4 |       8 | 
|    4 |       9 | 
|    4 |      10 | 
|    3 |      11 | 
|    3 |      12 | 
|    2 |      13 | 
+-----------------+---------------------------+ 

を私は得るために達成し、2010年 に会議DPCで少なくとも2回発行されたすべての著者のリストを取得したいです出版された著者のリスト、それぞれの出版物の数などがありますが、私は「少なくとも2つ」の要素を得ることはできません。

私の次のクエリは、

SELECT author.name, COUNT(name) FROM author INNER JOIN author_has_publication ON author.idAuthor=author_has_publication.Author_idAuthor INNER JOIN publication ON author_has_publication.Publication_idPublication=publication.idPublication AND publication.date=2010 AND publication.conference='DPC'GROUP BY author.name; 

(良い)結果は次のとおり

+-------+-------------+ 
| name | COUNT(name) | 
+-------+-------------+ 
| Bob |   2 | 
| Bryan |   3 | 
| John |   1 | 
+-------+-------------+ 

を返しますが、私は、カウント(名前)を持つ唯一の> = 2を選択しようとすると、エラーが発生しました。 私はこのクエリを試してみました:

SELECT author.name, COUNT(name) FROM author INNER JOIN author_has_publication ON author.idAuthor=author_has_publication.Author_idAuthor INNER JOIN publication ON author_has_publication.Publication_idPublication=publication.idPublication AND publication.date=2010 AND publication.conference='DPC'GROUP BY author.name WHERE COUNT(name)>=2; 
+2

「あなたの所在地を変更する」を変更すると、完了すると思います。 –

+0

あなたは本当でした!その場合、どこで働いていないのですか? –

+1

WHEREはGROUP BYより前です。 – Strawberry

答えて

1

あなたが集約funcionを使用するときは、

は、クエリの結果にworokを持つHAVINGという名前の適切な演算子でフィルタリングすることができます(数(のようなaggrgated結果PN当時))テーブルの行の元の値を扱う場所ではなく、

SELECT author.name, COUNT(name) 
FROM author INNER JOIN author_has_publication 
     ON author.idAuthor=author_has_publication.Author_idAuthor 
INNER JOIN publication 
     ON author_has_publication.Publication_idPublication=publication.idPublication 
AND publication.date=2010 AND publication.conference='DPC' 
GROUP BY author.name 
HAVING COUNT(name)>=2;