MySQL innerjoin на массиве - PullRequest
       3

MySQL innerjoin на массиве

0 голосов
/ 10 ноября 2011

У меня есть две таблицы

[series]
--------------
ID | ART
--------------
1  | sculptor      
2  | painter
3  | writer
--------------


[artists]
--------------
NAME | ART_IDs
--------------
john | 1
jack | 1,2
jill | 2,1
jeff | 3,1

, к которым я хочу присоединиться следующим образом:

SELECT se.art, ar.name as artist
FROM series AS se
INNER JOIN artists AS ar ON (se.id IN (ar.art_ids))

Я получаю только первые значения:

[result]
-------------------
ART      | ARTISTS
-------------------
sculptor | john
sculptor | jack
painter  | jill
writer   | jeff

Вместо:

[result]
-------------------
ART      | ARTISTS
-------------------
sculptor | john
sculptor | jack
sculptor | jill
sculptor | jeff
painter  | jack
painter  | jill
writer   | jeff

Обычно я делаю это с третьей таблицей со ссылками pe.id <-> se.id.Но другую таблицу довольно сложно поддерживать в моей структуре.

1 Ответ

2 голосов
/ 10 ноября 2011

Как уже упоминалось выше, лучший вариант - это исправить структуру таблицы, лучше сделать это сейчас, пока у вас есть такая возможность. По мере роста данных это вызовет много головной боли. Однако, если вы знаете, что делаете, я думаю, это даст вам то, что вы хотите в краткосрочной перспективе:

SELECT se.art, ar.name as artist
FROM series AS se
JOIN artists AS ar ON FIND_IN_SET(se.id , ar.art_ids) > 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...