รบกวนสอบถามการใช้หาผลรวมข้อมูลเพื่อสรุปทำรายงานครับ (ไม่ได้ใช้นานจริงๆครับ)
สวัสดีครับ พอดีผมไม่ได้เขียน Code มานานมากละประมาณ เกือบ 20 ปี กำลังจะมารื้นฟื้นใหม่ทั้งหมด ตอนนี้มาเจอปัญหาอยากจะรบกวนพี่ๆ ช่วยหน่อยครับ
Database
water_id // เก็บรหัสแหล่งน้ำ
prov_name // ชื่อจังหวัด
amp_name // ชื่ออำเภอ
tam_name // ชื่อตำบล ในที่นี้ต้องการนับจำนวนตำบล ว่าใน 1 อำเภอ มีกี่ตำบล count(distinct tam_name)
moo // หมู่ที่
moo_name // ชื่อหมู่บ้าน ในที่นี้ต้องการนับจำนวนหมู่บ้าน ที่อยู่ในตำบลว่ามีกี่หมู่บ้าน count(distinct moo_name)
name // ชื่อแหล่งน้ำ ในที่นี้ต้องการนับจำนวนแหล่งน้ำ ที่มีอยู่ใน อำเภอ ตำบล หมู่บ้าน count(name)
detail // ที่ตั้งแหล่งน้ำ (ที่สาธารณะ,ที่ สปก.,เขตป่าไม้,เขตป่าชุมชน,อื่นๆ) ต้องการนับ ใน อำเภอ ตำบล หมู่บ้าน มีจำนวน แหล่งน้ำเท่าไร แบ่งออก ตั้งอยู่ที่ไหนบ้าง ประมาณนี้ครับ
$strSQL = "SELECT water_id,prov_name,amp_name,count(distinct tam_name),moo,count(distinct moo_name),count(name),detail,deplete_date
FROM water_view
WHERE moo_id LIKE '%$digi_tree%' and deplete_date>'$dates' and deplete_date <'$datee'
Group BY amp_name ";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
?>
<table width="100%" border="1">
<tr>
<th width="91"> <div align="center">รหัสแหล่งน้ำ </div></th>
<th width="98"> <div align="center">จังหวัด </div></th>
<th width="198"> <div align="center">อำเภอ </div></th>
<th width="97"> <div align="center">จำนวนตำบล </div></th>
<th width="59"> <div align="center">จำนวนหมู่บ้าน </div></th>
<th width="71"> <div align="center">จำนวนแหล่งน้ำ </div></th>
<th width="71"> <div align="center">จำนวนที่สาธารณะ </div></th>
<th width="71"> <div align="center">จำนวนที่ สปก. </div></th>
<th width="71"> <div align="center">จำนวนเขตป่าไม้ </div></th>
<th width="71"> <div align="center">จำนวนเขตป่าชุมชน</div></th>
<th width="71"> <div align="center">อื่นๆ</div></th>
</tr>
<?php
$i="0";
$A1="0";
$A2="0";
$A3="0";
$A4="0";
$A5="0";
while($objResult = mysql_fetch_array($objQuery))
{
for ($i=1 ; $i<=$objResult[6];$i++){
if ($objResult["detail"]=="ที่สาธารณะ"){
$A1=$A1+1;
}elseif ($objResult["detail]=="ที่ สปก."){
$A2=$A2+1;
}elseif ($objResult["detail]=="เขตป่าไม้"){
$A3=$A3+1;
}elseif ($objResult["detail]=="เขตป่าชุมชน){
$A4=$A4+1;
}else{
$A5=$A5+1;
}
?>
<tr>
<td><div align="center"><?php echo $objResult["water_id"];?></div></td>
<td><div align="center"><?php echo $objResult["prov_name"];?></div></td>
<td><?php echo $objResult["amp_name"];?></td>
<td><?php echo $objResult[3];?></td>
<td><div align="center"><?php echo $objResult[5];?></div></td>
<td align="right"><?php echo $objResult[6];?></td>
<td align="right"><?php echo $A1;?></td>
<td align="right"><?php echo $A2;?></td>
<td align="right"><?php echo $A3;?></td>
<td align="right"><?php echo $A4;?></td>
<td align="right"><?php echo $A5;?></td>
</tr>
<?php
}
?>
</table>
<?php
mysql_close($objConnect);
}
?>
</body>
</html>
Tag : PHP, MySQL, Report Others, XAMPP, Windows
Date :
2020-06-08 15:17:27
By :
drakvender
View :
578
Reply :
7
Is the attached image yours result target?
What is the database structure look like?
I'm afraid that you might have to redesign db.
Date :
2020-06-08 15:35:33
By :
PhrayaDev
ขอบคุณครับ รบกวนด้วยครับ ไม่ได้ใช้งานนานจริงๆ ความรู้คืนอาจารย์ หมดละ
Date :
2020-06-08 20:05:02
By :
drakvender
ที่ถามหาโครงสร้างตารางและตัวอย่างข้อมูล เพื่อความมั่นใจ
ถ้าไม่อยากออกแบบฐานข้อมูลใหม่
Code (SQL)
...GROUP BY water_id
http://sqlfiddle.com/#!9/17f4ec/13/0
ตัวอย่างการใช้ใน Template
Code (PHP)
<?php
// Connection
$host_name = 'server';
$user_name = 'user';
$pass_word = 'password';
$database_name = 'database';
$short_connect = new mysqli($host_name, $user_name, $pass_word, $database_name);
$short_connect -> set_charset("utf8");
//SQL statement for a table in the database
$sql = "SELECT water_id, prov_name, amp_name,
COUNT(tam_name) AS nTambon,
COUNT(moo_name) AS nMooban,
COUNT(water_id) AS nWater,
SUM(CASE WHEN detail = 'สาธารณะ' THEN 1 ELSE 0 END) AS nSatha,
SUM(CASE WHEN detail = 'สปก.' THEN 1 ELSE 0 END) AS nSPK,
SUM(CASE WHEN detail = 'ป่าไม้' THEN 1 ELSE 0 END) AS nPamai,
SUM(CASE WHEN detail = 'ป่าชุมชน' THEN 1 ELSE 0 END) AS nCh,
SUM(CASE WHEN detail = 'อื่นๆ' THEN 1 ELSE 0 END) AS nX
FROM water
GROUP BY water_id"; // Pay attention to this one.
//result is boolean for query other than SELECT, SHOW, DESCRIBE and EXPLAIN
$result = $short_connect->query($sql);
// Create a template from database
if (($result) && ($result->num_rows > 0))
{
echo '<table><tr>
<th>รหัสแหล่งน้ำ</th>
<th>จังหวัด</th>
<th>อำเภอ</th>
<th>จำนวนตำบล</th>
<th>จำนวนหมู่บ้าน</th>
<th>จำนวนแหล่งน้ำ</th>
<th>จำนวนที่สาธารณะ</th>
<th>จำนวนที่ สปก.</th>
<th>จำนวนเขตป่าไม้</th>
<th>จำนวนเขตป่าชุมชน</th>
<th>จำนวนอื่นๆ</th></tr>
';
//convert query result into an associative array
while ($row = $result->fetch_assoc())
{
echo '<tr>
<td>' . array_values($row)[0] . '</td>
<td>' . array_values($row)[1] . '</td>
<td>' . array_values($row)[2] . '</td>
<td>' . array_values($row)[3] . '</td>
<td>' . array_values($row)[4] . '</td>
<td>' . array_values($row)[5] . '</td>
<td>' . array_values($row)[6] . '</td>
<td>' . array_values($row)[7] . '</td>
<td>' . array_values($row)[8] . '</td>
<td>' . array_values($row)[9] . '</td>
<td>' . array_values($row)[10] . '</td>
</tr>';
}
echo '</table>';
$result->free();
}
$short_connect->close();
/* https://www.thaicreate.com/php/forum/135287.html */
?>
สุดท้ายความสวยงามของตารางตกแต่งที่ CSS
ประวัติการแก้ไข 2020-06-09 14:34:15 2020-06-09 15:13:21 2020-06-09 15:14:42 2020-06-09 15:15:37 2020-06-09 15:16:17
Date :
2020-06-09 14:32:13
By :
PhrayaDev
Code (SQL)
-- ...
SUM(CASE WHEN detail NOT IN('สาธารณะ', 'สปก.', 'ป่าไม้', 'ป่าชุมชน') THEN 1 ELSE 0 END) AS nX
-- ...
http://sqlfiddle.com/#!9/17f4ec/16
Date :
2020-06-11 13:33:24
By :
PhrayaDev
Load balance : Server 02