2011-02-03 6 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

Это сработало отлично. Большое спасибо. Hope Op отмечает это как ответ :) –

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)"); 
    } 
} 
?> 
Смежные вопросы