2011-02-03 13 views
6

私は、次の種類のレコードを持つテーブルを1つ持っています。私はSalesmanと関連する口座番号(カンマ区切り)を持っています。コンマ区切りの値の分離

+----------+----------+ 
| Salesman | Acct  | 
+----------+----------+ 
| Ron  | 1,2,3,4 | 
| Kin  | 6,7,8 | 
| Joe  | 10,23,45 | 

I am looking for output some thing like, 

+----------+----------+ 
| Salesman | Acct  | 
+----------+----------+ 
| Ron  | 1  | 
| Ron  | 2  | 
| Ron  | 3  | 

私は上記の結果を与えることができるクエリを書くのを手伝ってください。

ありがとうございました。

答えて

4

スキーマを使用可能なものに再構成するために、これは単発的な操作と同じように必要と思っています。

可能なアカウント番号をすべて一覧表示する別のテーブルがありますか?そうする場合は、これを行うことができます:

SELECT salesman, a.Acct 
FROM account AS a 
JOIN salesman_account AS sa 
ON FIND_IN_SET(a.Acct, sa.Acct) 
+0

これは完全に機能しました。どうもありがとう。希望Opはこれを答えとしてマークしています:) –

2

1回限りの操作であれば、サポート言語を使用して処理するほうが簡単でしょう。 PythonやPHPは、このような種類のスクリプトを開発するのに非常に高速です。

1

これは非常に難しいことです。

データベースを正規化すると仮定します。もしそうでなければ、あなたは本当にすべきです。

私があなたの場合は、テーブルを正規化するスクリプトを作成します。次はphpのサンプルです(エラーが含まれている可能性があります)。

<?php 
$res = mysql_query('SELECT Salesman, Acct FROM table'); 
while ($obj = mysql_fetch_object($res)) { 
    $values = explode(',', $obj->Acct); 
    foreach ($values as $value) { 
    mysql_query("INSERT INTO new_table (Salesman, Acct) VALUES ('$obj->Salesman', $value)"); 
    } 
} 
?> 
関連する問題