2017-03-09 8 views
0

私はthis previous answerの結果を処理しようとしましたが、何も動作していないようです。私は事実上同じセットアップを持っています、ちょうど異なるタイプのファイルを持っています。MySQL - GROUP_CONCATと結合すると1054エラーが発生する

ファイル表files

id file_name 
1 1e462cef-1c2c-4ddf-8b48-0b3002e2101d.nzb 
2 303dc268-bf55-49e5-9901-cfbb99b09a69.nzb 
3 1297993d-784b-4996-b3b9-9048b068652b.nzb 
4 a2cebf3a-b3b1-498e-ad4c-100774ff4b9d.nzb 

タグ表tags

id tag_name 
1 no.mirrors 
2 at.least.one.mirror 
3 multiple.mirrors 
4 no.mirrors 
5 original.deleted 

ファイル・タグ関係テーブルfiles__tags

file_id (FK to files.id) tag_id (FK to tags.id) 
     1     1 
     1     5 
     2     1 
     3     3 
     3     5 
     4     4 

ようなので、私はいくつかの出力を得るために期待していた:私は、いくつかの他のものを試してみました

SELECT files.file_name, GROUP_CONCAT(files__tags.tag_id) AS associated_tags 
FROM files 
LEFT OUTER JOIN tags ON files__tags.file_id = files.id 
GROUP BY files.file_name; 

:私のようなその前の質問の答えから私のクエリを再作成しようとした

file_id file_name         tags 
     1 1e462cef-1c2c-4ddf-8b48-0b3002e2101d.nzb 1,5 
     2 303dc268-bf55-49e5-9901-cfbb99b09a69.nzb 1 
     3 1297993d-784b-4996-b3b9-9048b068652b.nzb 3,5 
     4 a2cebf3a-b3b1-498e-ad4c-100774ff4b9d.nzb 4 

質問に答えた人はtag.photoを参照していますが、これは質問に答えた人が提供する簡略化されたテーブル構造には存在しません。写真とタグに関するテーブルのタイプミスであると思います。

とにかく、私は取得していますエラーは次のとおりです。上記の列の

SQL query: 

SELECT files.file_name, GROUP_CONCAT(files__tags.tag_id) AS associated_tags 
FROM files 
LEFT OUTER JOIN tags ON files__tags.file_id = files.id 
GROUP BY files.file_name LIMIT 0, 25 

MySQL said: 
#1054 - Unknown column 'files__tags.tag_id' in 'field list' 

すべてが存在します。

ありがとうございます!

EDIT:私はまた、自分自身でこれらの事のそれぞれを試みたが、エスケープ2つの提案(FROMにリレーショナルデータベースを追加すると、テーブル/カラム名をエスケープ)

SELECT files.file_name, GROUP_CONCAT(files__tags.tag_id) AS associated_tags 
FROM files,files__tags 
LEFT OUTER JOIN tags ON `files__tags`.`file_id` = `files`.`id` 
GROUP BY files.file_name; 

を試してみました文全体のすべての表名/列名。私が手に脱出して

FROMで命名files__tagsテーブルで

#1054 - Unknown column 'files__tags.tag_id' in 'field list' 

私が手:

#1054 - Unknown column 'files.id' in 'on clause' 

EDIT2:OK、解決のための多くのおかげで

SELECT files.file_name, GROUP_CONCAT(files__tags.tag_id) AS associated_tags 
FROM files 
LEFT JOIN files__tags ON files__tags.file_id =files.id 
LEFT OUTER JOIN tags ON tags.id=files__tags.tag_id 
GROUP BY files.file_name LIMIT 0, 25 
+0

「ファイル__タグ」は何ですか? –

+0

これはファイルとタグを関連付けるテーブルです(上にラベル付けされています) – incorpusyehtee

+0

そのため、そのテーブルは 'JOIN'または' FROM'節で言及する必要があります。 –

答えて

0
SELECT files.file_name, GROUP_CONCAT(files__tags.tag_id) AS associated_tags 
FROM files 
LEFT JOIN files__tags ON files__tags.file_id =files.id 
LEFT OUTER JOIN tags ON tags.id=files__tags.tag_id 
GROUP BY files.file_name LIMIT 0, 25 

上記のコードを試してください。これが役に立ちますようお願いいたします。

0

なぜ使用しないのですかLEFT OUTER JOIN。試してみてください

 SELECT files.file_name, GROUP_CONCAT(files__tags.tag_id) AS associated_tags 
FROM files 
LEFT JOIN files__tags ON files__tags.file_id =files.id 
LEFT JOIN tags ON tags.id=files__tags.tag_id 
GROUP BY files__tags.file_id LIMIT 0, 25 
関連する問題