2011-02-03 93 views
6

Tôi có một bảng có các loại bản ghi sau trong đó. Tôi có Salesman và các số tài khoản liên quan (được phân cách bằng dấu phẩy).tách giá trị được phân cách bằng dấu phẩy

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

Hãy giúp tôi viết truy vấn có thể cho tôi kết quả như trên.

Cảm ơn sự giúp đỡ của bạn.

Trả lời

4

Tôi giả định rằng bạn cần điều này giống như một hoạt động một lần để cơ cấu lại lược đồ của bạn thành một thứ có thể sử dụng được.

Bạn có bảng khác liệt kê tất cả các số tài khoản có thể không? Nếu bạn làm như vậy, bạn có thể làm điều này:

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

Điều này làm việc hoàn hảo. Cảm ơn rất nhiều. Hope Op đánh dấu câu trả lời này là câu trả lời :) –

2

Nếu đó là thao tác một lần tắt thì có thể sẽ dễ dàng hơn khi sử dụng bất kỳ ngôn ngữ hỗ trợ nào để xử lý. Python hoặc PHP là rất nhanh trong việc phát triển các loại kịch bản như vậy.

1

Vâng, đó là một điều rất khó làm.

Tôi cho rằng bạn đang chuẩn hóa cơ sở dữ liệu của mình. Nếu không, bạn thực sự cần.

Nếu tôi là bạn, tôi sẽ viết kịch bản để chuẩn hóa bảng. Tiếp theo là một mẫu trong php (có thể có lỗi):

<?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)"); 
    } 
} 
?> 
Các vấn đề liên quan