|
|
|
ช่วยด้วยคับ การนับความถี่ของ String ใน Transaction |
|
|
|
|
|
|
|
select * from
(
select Itemset,count(*) c1 from tb group by Itemset
) as t1
order by c1 desc
|
|
|
|
|
Date :
2010-05-17 06:02:51 |
By :
num |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อืมโทษทีครับมาดูอีกทีข้อมูลอยู่ในรูปแบบที่โค้ดข้างบนใช้ไม่ได้
Tb1
Tid Itemset
1 B00010,B00007,B00002
2 B00002,B00006
3 B00002
4 B00004,B00006
ควรจะเปลี่ยนเป็น
Tid, ItemCode
1 B00010
1 B00007
1 B00002
2 B00002
2 B00006
เพื่อให้สามารถ query ซับซ้อนได้ครับ
|
|
|
|
|
Date :
2010-05-17 08:04:38 |
By :
num |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เอ่อ...
ข้อมูลในแต่ละแถวมันมีหลาย Item ครับ ถ้าในแต่ละแถวมีฟิลด์เดียวคงไม่มีปัญหา ^^" จึงอยากได้ PHP Script ในการแก้ไขปัญหา
จะเขียนแบบ oop หรือ function ก็ได้ครับ ขอบคุณล่วงหน้าอีกครั้งครับ
|
|
|
|
|
Date :
2010-05-17 10:56:08 |
By :
DarkEvil |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<?php
// mysql_connect mysql_select_db ฯลฯ
$r = mysql_query("SELECT item FROM tb");
$rows = array();
while ($row = mysql_fetch_assoc($r)){
$rows[] = $row;
}
$data = array();
foreach($rows as $row){
$items = explode(',',$row['item']);
foreach($items as $item){
if ($items[0] != ""){
if (isset($data[$item])){
$data[$item]++;
}else{
$data[$item] = 1;
}
}
}
}
array_multisort($data,SORT_DESC,$data);
foreach($data as $itemcode=>$count){
echo $itemcode,'..',$count,'<br>';
}
?>
|
|
|
|
|
Date :
2010-05-17 14:28:00 |
By :
num |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|