3

属性を持つこれらの 2 つのエンティティがあります。

本 - book_id、book_name、author_id、editor_id、subject_id、isbn

著者 - author_id、fn、ln

属性とエンティティは次のとおりです。行数が最も多い著者にクエリを実行する必要があります。

| | book_id | ブック名 | 著者ID | editor_id | isbn |
-------------------------------------------------- ------------
| | 1 | Book1 タイトル | 著者1 | エディター1 | 8000-9000 |
| | 2 | Book2 タイトル | 著者2 | エディター1 | 8000-9001 |
| | 1 | Book1 タイトル | 著者1 | エディター1 | 8000-9002 |
| | 3 | Book2 タイトル | 著者2 | エディター1 | 8000-9003 |
| | 著者ID | fn | で |
----------------------------------
| | 1 | 名前1 | 名前1 |
| | 2 | 名前2 | lname2 |
| | 3 | 名前3 | lname3 |

ここに私のコードがあります:

SELECT author.author_id, author.fn, author.ln, COUNT(DISTINCT book.editor_id) as num
FROM `editor`, `book`
GROUP BY `editor_id`
LIMIT 0,1

しかしもちろん、私は欲しいものを手に入れません。出力は次のようにする必要があります。

| | 著者ID | fn | で |
----------------------------------
| | 1 | 名前1 | 名前1 |

「author_id = 1」には本のエントリが 2 つあるためです。

4

1 に答える 1

7

これを試してみてください。ただし、 をauthor_idからに変換したことに注意しvarcharてくださいint:

SELECT book_count,a.author_id,a.fn, a.ln 
FROM author a
JOIN
(
  SELECT c.author_id,COUNT(*) book_count FROM book c
  GROUP BY c.author_id
) b 
ON a.author_id = b.author_id
ORDER BY book_count DESC LIMIT 1

これがSQLFiddleです。

于 2013-08-05T03:20:32.340 に答える