2011-02-03 195 views
6

我有一張表格,裏面有下列種類的記錄。我有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

這工作完美。非常感謝。希望歐普將此標記爲答案:) – 2011-07-22 12:36:03

2

如果是一次性操作,那麼使用任何支持語言進行處理可能更容易。 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)"); 
    } 
} 
?>