У меня есть 2 таблицы, но связаны многие ко многим отношений так 3 таблицы:MySQL Предельные результаты на основе Join Table
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 |
+---------------+--------------+------+-------------+------------+-----------+
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 |
+-----------------+---------------------------+
То, что я хочу сделать, это получить верхнюю X автор, имеющий наибольшее количество публикаций.
я достиг, чтобы получить результат АВЭК в idAuthor, имеющие наибольшее количество публикаций, используя этот запрос: SELECT Author_idAuthor, COUNT(*) as count FROM Author_has_publication GROUP BY Author_idAuthor ORDER BY count DESC;
Я получаю список ид авторов, упорядоченный по количеству публикаций:
+-----------------+-------+
| Author_idAuthor | count |
+-----------------+-------+
| 3 | 3 |
| 2 | 2 |
| 1 | 2 |
| 4 | 1 |
+-----------------+-------+
, но затем когда я пытаюсь выбрать автора, соответствующий верхнему X результирующего набора предыдущего запроса, у меня есть ошибка Я пытаюсь это SELECT TOP 2 FROM author WHERE (SELECT Author_idAuthor, COUNT(*) as count FROM Author_has_publication GROUP BY Author_idAuthor ORDER BY count DESC)=idAuthor;
Я думаю, это может быть потому, что мой внутренний запрос возвращает 2 строки, и я делаю простой SELECT
здесь или мне нужен JOIN
, но я га нет идей, как использовать его здесь.
Поделитесь некоторыми примерами ввода и вывода. Было бы легче помочь. Кроме того, я думаю, у вас возникли проблемы с отображением имен автора. –
Я отредактировал, так как вы задали –
Используете ли вы Sql или MySQL? Попробуйте приведенный ниже запрос @Alan Hay. Посмотрите, работает ли это. –