まず第一に、bažmegakapa が言ったことは正しいです。あなたが説明したセットアップを正しく理解していれば、すでにかなりのスペース (およびパフォーマンス) を無駄にしています。
あなたはこれを行うことができます:
CREATE TABLE pleft ( id integer, name varchar(20), tags integer );
CREATE TABLE pright ( id integer, tag varchar(20));
INSERT INTO pleft VALUES ( 1, 'Bob', 1 ), ( 9, 'Bob', 4 ), ( 15, 'Bob', 6 );
INSERT INTO pleft VALUES ( 2, 'Ann', 1 ), ( 3, 'Joe', 4 ), ( 4, 'Joe', 6 );
INSERT INTO pright VALUES ( 1, 'Sailing' ), ( 4, 'Snowboarding' ), ( 6, 'Skiing' );
SELECT pleft.name, GROUP_CONCAT(pright.tag)
FROM pleft JOIN pright ON ( pleft.tags = pright.id )
GROUP BY pleft.name ORDER BY pleft.name;
+------+-----------------------------+
| name | GROUP_CONCAT(pright.tag) |
+------+-----------------------------+
| Ann | Sailing |
| Bob | Sailing,Skiing,Snowboarding |
| Joe | Snowboarding,Skiing |
+------+-----------------------------+
pleft
...しかし、テーブルの各行で名前が不必要に重複していることに注意してください。理想的には、人物をモデル化する 1 つのテーブル (id=1, name="Bob")、タグをモデル化する 1 つのテーブル (id=6, value="Skiing")、およびそれらの関係を含む 1 つのテーブルが必要です。これにより、たとえば、ボブが「ロバート」を使用することを決定した場合、タグ テーブル全体を de-bob する必要はなく、ボブに関連する 1 行だけを削除する必要があります。
アップデート
「 1,4,6 tags
」を保持する varchar フィールドも同様です。同じロジックが適用されますが、再度結合する前にフィールドを分割する必要があります。"11" は true を返すため、"1 in tags" のようなものは使用できません ("1" は "11" に含まれます)。(これは、"Jaywalking" として知られる SQL アンチパターンです: https://groups.google.com/forum/?fromgroups=#!topic/django-users/5j4AmQE6nTkなどを参照してください)
SELECT pleft.name, GROUP_CONCAT(pright.tag)
FROM pleft JOIN pright
ON ( CONCAT(',',pleft.tags,',') LIKE CONCAT('%,',pright.id,',%' ))
GROUP BY pleft.name ORDER BY pleft.name;
もう 1 つの方法は、ストアド プロシージャを使用することです。 http://www.marcogoncalves.com/2011/03/mysql-split-column-string-into-rows/を参照してください。
CREATE TABLE pleft ( id integer, name varchar(20), tags varchar(20) );
INSERT INTO pleft VALUES ( 1, 'Bob', '1,4,6' ), ( 2, 'Jill', '4,1' );
SELECT pleft.name, GROUP_CONCAT(pright.tag)
FROM pleft JOIN pright
ON ( CONCAT(',',pleft.tags,',') LIKE CONCAT('%,',pright.id,',%' ))
GROUP BY pleft.name ORDER BY pleft.name;
+------+-----------------------------+
| name | GROUP_CONCAT(pright.tag) |
+------+-----------------------------+
| Bob | Sailing,Snowboarding,Skiing |
| Jill | Sailing,Snowboarding |
+------+-----------------------------+