[SQL][PHP] สอบถามการ Group By หน่อยครับ จะทำยังไงให้มัน Group อีกที หรือใช้ php เข้าช่วยก็ได้ (อ่านแล้วงงมีรูปด้านใน)
จากตารางนี้จะเห็นว่า รหัส และชื่อสินค้า ซ้ำกันอยู่ อยากจะทำให้รวมเป็นแถวเดียว โดยแยก TEAM(รูปตาราง 3) เป็นคอลั่มๆไป G1=TEAM1, G2=TEAM2, ... (แบบรูปที่ 2) พอจะมีวิธีไหนบ้างครับ ถ้ามีคำสั่งสั้นๆโดยใช้ SQL ก็จะใช้ แต่ถ้าไม่มีจะใช้ php เข้าช่วยก็ได้ครับ
อยากทำเป็นแบบนี้
จริงๆ G1-G4 เป็นแบบนี้ ผมแค่แยก <tr></tr> มาเฉยๆ
ผมให้ G1 = TEAM 1 โดยแสดงค่าเป็นจำนวน
G2 = TEAM 2 โดยแสดงค่าเป็นจำนวน >> G3 G4 ตามลำดับ ก็จะได้ดังตารางแรกด้านบน
โดยก่อนหน้านี้ก็ GROUP BY มาแล้ว ($string คือ CODE column 1 ในตาราง)
Code (SQL)
SELECT items_pj.CODE
, items.NAME
, T_itempj.Team_id
, sum(selldetail.Sd_Amount)
, items_pj.Target
, items.RSELL_COST
, items_pj.Per_K
FROM items_pj
RIGHT JOIN items on (items_pj.CODE = items.CODE)
LEFT JOIN selldetail on (items.CODE=selldetail.it_code)
LEFT JOIN branch_name on (mid(selldetail.se_no,2,3) = branch_name.CODE_ID)
LEFT JOIN T_itempj on (branch_name.id=T_itempj.Br_id)
WHERE date(selldetail.Sd_TStamp) BETWEEN '".$date_start."' AND '".$date_end."'
AND items.CODE in (".$string.")
group by items_pj.CODE, T_itempj.Team_id
order by items_pj.Target asc
มีอะไรสอบถามเพิ่มเติมบอกได้นะครับ
ขอบคุณล่วงหน้าครับ
มาเพิ่ม code แบบเต็มๆ เพื่อท่านใดมีไอเดียเจ๋งๆจะมาลด code ที่ใช้อยู่ให้สั้นลง
Code (PHP)
<table class="table" border='1' bordercolor='#FFF' cellpadding='0' cellspacing='0'>
<thead bgcolor="#00a65a" style="color:#FFFFFF;">
<tr>
<th style="text-align:center;vertical-align:middle">รหัส</th>
<th style="text-align:left;vertical-align:middle">ชื่อสินค้า</th>
<th style="text-align:center;vertical-align:middle">G1</th>
<th style="text-align:center;vertical-align:middle">G2</th>
<th style="text-align:center;vertical-align:middle">G3</th>
<th style="text-align:center;vertical-align:middle">G4</th>
<th style="text-align:center;vertical-align:middle">Target</th>
<th style="text-align:center;vertical-align:middle">P</th>
<th style="text-align:center;vertical-align:middle">%K</th>
</tr>
</thead>
<tbody>
<?php
$string = implode(",", $it_code);
$query2 = "SELECT items_pj.CODE
, items.NAME
, T_itempj.Team_id
, sum(selldetail.Sd_Amount)
, items_pj.Target
, items.RSELL_COST
, items_pj.Per_K
FROM items_pj
RIGHT JOIN items on (items_pj.CODE = items.CODE)
LEFT JOIN selldetail on (items.CODE=selldetail.it_code)
LEFT JOIN branch_name on (mid(selldetail.se_no,2,3) = branch_name.CODE_ID)
LEFT JOIN T_itempj on (branch_name.id=T_itempj.Br_id)
WHERE date(selldetail.Sd_TStamp) BETWEEN '".$date_start."' AND '".$date_end."'
AND items.CODE in (".$string.")
group by items_pj.CODE, T_itempj.Team_id
order by items_pj.Target asc";
$ck_B = 0; $ck_C = 0;
$sum_t1=0; $sum_t2=0; $sum_t3=0; $sum_t4=0;
$result2 = mysql_query ($query2);
while ( $row2 = mysql_fetch_array($result2) ){
if($row2['4'] == 'B' && $ck_B == 0){
$ck_B++;
echo '<tr bgcolor="#EEE">';
echo '<td></td>';
echo '<td style="text-align:center;vertical-align:middle"><B>SALES TARGET A</B></td>';
echo '<td style="text-align:center;vertical-align:middle">'.$sum_t1.'</td>';
echo '<td style="text-align:center;vertical-align:middle">'.$sum_t2.'</td>';
echo '<td style="text-align:center;vertical-align:middle">'.$sum_t3.'</td>';
echo '<td style="text-align:center;vertical-align:middle">'.$sum_t4.'</td>';
echo '<td></td>';
echo '<td></td>';
echo '<td></td>';
echo '</tr>';
$sum_t1=0; $sum_t2=0; $sum_t3=0; $sum_t4=0;
}elseif ($row2['4'] == 'C' && $ck_C == 0 ){
$ck_C++;
echo '<tr bgcolor="#EEE">';
echo '<td></td>';
echo '<td style="text-align:center;vertical-align:middle"><B>SALES TARGET B</B></td>';
echo '<td style="text-align:center;vertical-align:middle">'.$sum_t1.'</td>';
echo '<td style="text-align:center;vertical-align:middle">'.$sum_t2.'</td>';
echo '<td style="text-align:center;vertical-align:middle">'.$sum_t3.'</td>';
echo '<td style="text-align:center;vertical-align:middle">'.$sum_t4.'</td>';
echo '<td></td>';
echo '<td></td>';
echo '<td></td>';
echo '</tr>';
$sum_t1=0; $sum_t2=0; $sum_t3=0; $sum_t4=0;
}else{
echo '<tr>';
echo '<td style="text-align:center;vertical-align:middle">'.$row2['0'].'</td>';
echo '<td style="text-align:left;vertical-align:middle">'.$row2['1'].'</td>';
if($row2['2']==1){
$sum_t1 += $row2['3']*$row2['5'];
echo '<td style="text-align:center;vertical-align:middle">'.$row2['3'].'</td>';
echo '<td style="text-align:center;vertical-align:middle"></td>';
echo '<td style="text-align:center;vertical-align:middle"></td>';
echo '<td style="text-align:center;vertical-align:middle"></td>';
}elseif($row2['2']==2){
$sum_t2 += $row2['3']*$row2['5'];
echo '<td style="text-align:center;vertical-align:middle"></td>';
echo '<td style="text-align:center;vertical-align:middle">'.$row2['3'].'</td>';
echo '<td style="text-align:center;vertical-align:middle"></td>';
echo '<td style="text-align:center;vertical-align:middle"></td>';
}elseif($row2['2']==3){
$sum_t3 += $row2['3']*$row2['5'];
echo '<td style="text-align:center;vertical-align:middle"></td>';
echo '<td style="text-align:center;vertical-align:middle"></td>';
echo '<td style="text-align:center;vertical-align:middle">'.$row2['3'].'</td>';
echo '<td style="text-align:center;vertical-align:middle"></td>';
}elseif($row2['2']==4){
$sum_t4 += $row2['3']*$row2['5'];
echo '<td style="text-align:center;vertical-align:middle"></td>';
echo '<td style="text-align:center;vertical-align:middle"></td>';
echo '<td style="text-align:center;vertical-align:middle"></td>';
echo '<td style="text-align:center;vertical-align:middle">'.$row2['3'].'</td>';
}
echo '<td style="text-align:center;vertical-align:middle">'.$row2['4'].'</td>';
echo '<td style="text-align:center;vertical-align:middle">'.$row2['5'].'</td>';
echo '<td style="text-align:center;vertical-align:middle">'.$row2['6'].'</td>';
echo '</tr>';
}
}
echo '<tr bgcolor="#EEE">';
echo '<td></td>';
echo '<td style="text-align:center;vertical-align:middle"><B>SALES TARGET C</B></td>';
echo '<td style="text-align:center;vertical-align:middle">'.$sum_t1.'</td>';
echo '<td style="text-align:center;vertical-align:middle">'.$sum_t2.'</td>';
echo '<td style="text-align:center;vertical-align:middle">'.$sum_t3.'</td>';
echo '<td style="text-align:center;vertical-align:middle">'.$sum_t4.'</td>';
echo '<td></td>';
echo '<td></td>';
echo '<td></td>';
echo '</tr>';
?>
</tbody>
</table>
TABLE ต่างๆ คร่าวๆ
ตาราวนี้ตรง P คือค่า items.RSELL_COST ครับ จริงๆต้องกรอกไว้ แต่นี่กำลัง test อยู่เลยไม่ได้ใส่หมด
Tag : PHP, MySQL
ประวัติการแก้ไข 2015-08-29 16:33:05 2015-08-29 16:41:47
Date :
2015-08-29 16:29:45
By :
nPointXer
View :
1790
Reply :
2
Code (PHP)
$query2 = "SELECT items_pj.CODE
, items.NAME
, T_itempj.Team_id
, sum(selldetail.Sd_Amount) as Amt
, items_pj.Target
, items.RSELL_COST
, items_pj.Per_K
FROM items_pj
RIGHT JOIN items on (items_pj.CODE = items.CODE)
LEFT JOIN selldetail on (items.CODE=selldetail.it_code)
LEFT JOIN branch_name on (mid(selldetail.se_no,2,3) = branch_name.CODE_ID)
LEFT JOIN T_itempj on (branch_name.id=T_itempj.Br_id)
WHERE date(selldetail.Sd_TStamp) BETWEEN '".$date_start."' AND '".$date_end."'
AND items.CODE in (".$string.")
group by items_pj.CODE, T_itempj.Team_id
order by items_pj.Target asc";
$result2 = mysql_query ($query2); $ar = array();
while ( $row2 = mysql_fetch_array($result2) ){
$key=$row2['code'];
if(!isset($ar[$key])){
$ar[$key]=array(
'id'=>$key,
'name'=$row2['NAME'],
'target'=>$row2['Target'],
'p'=>$row2['RSELL_COST'],
'k'=>$row2['Per_K']
);
}
$ar[$key]['G'.$row2['Team_id']]=$row2['Amt'];
}
echo '<pre>', print_r($ar, true), '</pre>';
ส่วนที่เหลือคงง่ายแล้วมั้งครับ
Date :
2015-08-29 17:09:55
By :
NewbiePHP
Load balance : Server 01