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

MySQL:заявка с две много към много отношения и дубликати, с пълни данни от подзаявки

Можете да получите данните, които искате, като използвате JOIN s в подзаявката. Ако искате само имената, можете да използвате:

SELECT a.id, a.title,
       (SELECT JSON_ARRAYAGG(au.name)
        FROM article_author aa JOIN
             author au
             ON au.id = aa.author_id
        WHERE a.id = aa.article_id
       ) as authors,
       (SELECT JSON_ARRAYAGG(t.tag)
        FROM article_tag art JOIN
             tag t
             ON art.tag_id = t.id
        WHERE a.id = art.article_id
       ) as tags
FROM article a;

Не съм сигурен каква структура от данни искате както с идентификаторите, така и с имената. Ако искате масив от JSON обекти с две полета във всеки обект:

SELECT a.id, a.title,
       (SELECT JSON_ARRAYAGG(JSON_OBJECT('name', au.name, 'id', au.id))
        FROM article_author aa JOIN
             author au
             ON au.id = aa.author_id
        WHERE a.id = aa.article_id
       ) as authors,
       (SELECT JSON_ARRAYAGG(JSON_OBJECT('tag', t.tag, 'id', t.id))
        FROM article_tag art JOIN
             tag t
             ON art.tag_id = t.id
        WHERE a.id = art.article_id
       ) as tags
FROM article a;

Тук е db<>списък за тази версия.




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

  2. Как да прехвърля DATETIME като DATE в mysql?

  3. Mysql външен ключ чрез неуникален ключ - как е възможно това?

  4. Точно пагинация с леви присъединявания

  5. MySQL пропуска първите 10 резултата