Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysql dołącza do dwóch tabel z identyfikatorami oddzielonymi przecinkami

Możesz użyć FIND_IN_SET() i GROUP_CONCAT() w tej sprawie,

SELECT  b.Group_ID, GROUP_CONCAT(a.name) name
FROM    Table2 b
        INNER JOIN Table1 a
            ON FIND_IN_SET(a.ID, b.Group_ID) > 0
GROUP   BY b.Group_ID

WYJŚCIE

╔══════════╦═════════════════╗
║ GROUP_ID ║      NAME       ║
╠══════════╬═════════════════╣
║ 1        ║ Person1         ║
║ 2,3      ║ Person2,Person3 ║
╚══════════╩═════════════════╝

Na marginesie, to zapytanie może nie działać zgodnie z oczekiwaniami. Proszę znormalizować tabelę prawidłowo, nie zapisując wartości oddzielonych przecinkiem.

AKTUALIZUJ

GROUP_ID jest dość mylące. Czy to nie jest PersonIDList? ? W każdym razie, oto mój sugerowany projekt schematu:

Tabela PERSON

  • Identyfikator osoby (PK)
  • Nazwisko osoby
  • inne kolumny...

Tabela GRUP

  • ID grupy (PK)
  • Nazwa grupy
  • inne kolumny...

Tabela PERSON_GROUP

  • PersonID (FK) (w tym samym czasie PK z kolumną GroupID)
  • ID grupy (FK)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP nie widzi rozszerzenia mysql

  2. Przekaż parametry do skryptu MySQL

  3. Jak obsługiwać starszą bazę danych we frameworku Django

  4. Jak podłączyć bazę danych mySQL za pomocą C++

  5. MySQL odpowiednik modułu dblink w PostgreSQL?