2011-02-03 8 views
6

J'ai une table avec les types d'enregistrements suivants. J'ai Salesman et les numéros de compte associés (séparés par des virgules).séparation des valeurs séparées par des virgules

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

S'il vous plaît aidez-moi à écrire la requête qui peut me donner ci-dessus résultat.

Nous vous remercions de votre aide.

Répondre

4

Je suppose que vous avez besoin de cela comme une opération unique afin de restructurer votre schéma en quelque chose d'utilisable.

Avez-vous un autre tableau qui répertorie tous les numéros de compte possibles? Si vous le faites, vous pouvez le faire:

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

Cela a fonctionné parfaitement. Merci beaucoup. Hope Op marque cela comme réponse :) –

2

S'il s'agit d'une opération unique, il est probablement plus facile d'utiliser n'importe quelle langue pour effectuer le traitement. Python ou PHP est très rapide dans le développement de ce genre de scripts.

1

Eh bien c'est une chose très difficile à faire. Je suppose que vous normalisez votre base de données. Sinon, vous devriez vraiment.

Si j'étais vous, j'écrirais un script pour normaliser la table. Suivant est un exemple en PHP (il peut contenir des erreurs):

<?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)"); 
    } 
} 
?> 
Questions connexes