PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Намерете всички съавтори - Фасетиране/групиране за много към много таблица за съпоставяне

Опитайте това:

SELECT "AuthorId", COUNT(*)
FROM BookAuthorMapping
WHERE "BookId" IN (SELECT "BookId" FROM BookAuthorMapping WHERE "AuthorId" = 1)
GROUP BY "AuthorId"

Демо тук

Като алтернатива можете да използвате INNER JOIN :

SELECT t1."AuthorId", COUNT(*)
FROM BookAuthorMapping AS t1
INNER JOIN BookAuthorMapping AS t2 ON t1."BookId" = t2."BookId" AND t2."AuthorId" = 1
GROUP BY t1."AuthorId"

Демо тук



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво е очакваното поведение за множество функции, връщащи набор в клауза SELECT?

  2. Какъв тип данни да изберете json или jsonb или текст

  3. Ляво съединяване Странично и масив агрегати

  4. Вмъкване на множество редове с помощта на psycopg2

  5. Грешка в PostgreSQL:не може да се свърже с база данни template1:не може да се свърже със сървъра:Няма такъв файл или директория