2011-02-03 12 views
6

Tengo una tabla con los siguientes tipos de registros. Tengo Salesman y números de cuenta asociados (separados por comas).separación de valores separados por comas

+----------+----------+ 
| 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  | 

Ayúdeme a escribir la consulta que me puede dar el resultado anterior.

Gracias por su ayuda.

Respuesta

4

Supongo que necesita esto solo como una operación única para reestructurar su esquema en algo utilizable.

¿Tiene otra tabla que enumera todos los números de cuenta posibles? Si lo hace, puede hacerlo:

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

Esto funcionó a la perfección. Muchas gracias. Hope Op marca esto como respuesta :) –

2

Si se trata de una operación única, entonces probablemente sea más fácil usar cualquier lenguaje de apoyo para realizar el procesamiento. Python o PHP es muy rápido en el desarrollo de este tipo de scripts.

1

Bueno, es algo muy difícil de hacer.

Supongo que está normalizando su base de datos. Si no, realmente deberías.

Si yo fuera usted, escribiría un script para normalizar la tabla. El siguiente es un ejemplo en php (puede contener errores):

<?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)"); 
    } 
} 
?> 
Cuestiones relacionadas