カーソルを使用してデータセットを実行しています。SplitValues
各カーソルパスで、文字列は、行ごとに1つの値で、一時テーブルに単一の要素を書き込むストアドプロシージャを使用して分割されます。各データセットには一意のIDもありますds_id
SplitValues
value |
--------+
Item1 |
Item2 |
Item3 | `
また、split関数が生成する可能性のある各アイテムのIDを持つ参照テーブルもあります。
クラス
id | class |
---+--------
5 | Item1 |
6 | Item2 |
7 | Item3 |
8 | Item4 |
9 | Item5 |
私が今やりたいのはSplitValues
、データを格納するためにのすべての行を調べてテーブルに書き込むことですが、ストレージを節約するためにクラス自体ではなくクラスのIDを使用します。
ストレージ
ds_id | class_id |
------+-----------
0 | 5 |
0 | 6 |
0 | 7 |
これはかなり単純なはずですが、私は失敗しています。私は複数の試みをしました、1つは次のカーソルループでした:
FETCH cur1 INTO ds_id, string;
CALL `Split_String`(string, ',');
INSERT INTO storage (ds_id, class_id)
SELECT ds_id,
(SELECT classes.id FROM classes WHERE class = SplitValues.value ) as class_id ;
[...]
エラーが発生しましたUnknown column 'SplitValues.value' in 'where clause'
私はたくさん検索しましたが、私の問題は何らかの形でエイリアスに関連していると思いますが、解決策を見つけることができませんでした。