2016-08-26 12 views
-1

は、私はこのようなテーブルがあります。MySQL:1つのレコードから多数のレコードに可能ですか?

code allValues 
-------------- 
C001 1,2,3,4 
C002 3,4,5 
C003 6,7 

をし、私はこのようなテーブルを取得する必要があります。

code Value 
---------- 
C001 1 
C001 2 
C001 3 
C001 4 
C002 3 
C002 4 
C002 5 
C003 6 
C003 7 

カルシウム、私はそれがSQL文でいますか? PHPMyAdminでMySQLを使用していますが、特定のデータベースエンジンを認識していません。

+0

最初にコンマ区切りの値を分割してテーブルに格納し、そのテーブルをメインテーブル –

+1

に結合します。値を分割したり、mysqlにストアドプロシージャを書き込んで同じことをすることができます。だから、答えははいです、それは可能です。 – Shadow

+0

ストアドプロシージャのドラフトを作成することはできますか? – tic

答えて

1

あなたは、あなたが行うことができ、それぞれ「allvalue」のためのルックアップテーブルを持っている場合:

select t.code, lu.value 
from t join 
    lookup lu 
    on find_in_set(lu.value, t.allvalues) > 0; 

別の方法 - あなたはallvaluesの最大の長さを知っていれば - 文字列操作を行うことです。

select t.code, 
     substring_index(substring_index(t.allvalues, ',', n.n), ',', -1) as vaue 
from t cross join 
    (select 1 as n union all select 2 union all select 3 union all select 4 
    ) n 
    on n.n <= length(t.allvalues) - length(replace(t.allvalues, ',', '')); 

このバージョンでは、質問のように最大長が「4」であることを前提としています。

関連する問題