 |
มีปัญหาในการ Search แล้วมา COUNT ครับ รบกวนช่วยดูหน่อยครับ |
|
 |
|
|
 |
 |
|
ใช้ GROUP BY เข้าไปอ่านทำความเข้าใจก่อนนะครับ ติดปัญหาอะไรค่อยมาถามใหม่
|
ประวัติการแก้ไข 2011-07-16 11:32:17
 |
 |
 |
 |
Date :
2011-07-16 11:32:02 |
By :
Nautilus |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผลที่ได้คือ
150 2
151 1
แต่ผมต้องการ
55 (ชื่อ bg)
149 0 (149 ไม่มีในตาราง detail แต่เป็นซับย่อยของ 55 แต่อยากให้ขึ้นโชว์ด้วย นับแล้วมีค่าคือ 0)
150 2
151 1
Code (PHP)
<?
include("connect.inc");
$strSQL="SELECT service,COUNT(bg) AS countservice FROM detail WHERE bg=55 GROUP BY service ORDER BY service";
$objQuery = mssql_query($strSQL) or die ("Error Query [".$strSQL."]");
while($objResult = mssql_fetch_array($objQuery))
{
echo "<font color=red>".$objResult["service"]." </font>";
echo "<font color=red>".$objResult["countservice"]." </font>";
echo "<br>";
}
?>
|
 |
 |
 |
 |
Date :
2011-07-16 12:27:55 |
By :
MyZeus |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ่านแล้วงงดี แต่จับใจความได้ว่า คงต้องใช้ left join หรือว่า right join
|
 |
 |
 |
 |
Date :
2011-07-16 12:48:22 |
By :
PlaKriM |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
LEFT JOIN ละครับผลคือ
149 ผลิตภัณฑ์น้ำ 55
150 ผลิตภัณฑ์เครื่องดื่มสำเร็จรูป 55
151 ผลิตภัณฑ์เครื่องดื่มผสม 55
แต่พอ COUNT error เลยครับ จะให้มันนับว่ามีข้อมูลทั้งหมดเท่าไหร่ของ bg=55 ที่ีมีในตาราง detail
Warning: mssql_query() [function.mssql-query]: message: Column 'service.ser_no' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. (severity 16) in C:\AppServ\www\1799\report_business1.php on line 17
Warning: mssql_query() [function.mssql-query]: Query failed in C:\AppServ\www\1799\report_business1.php on line 17
Error Query [SELECT service.*,detail.*,COUNT(detail.bg) AS countname FROM service LEFT JOIN detail ON service.ser_no = detail.id WHERE service.bg_no=55]
Code (PHP)
<?
include("connect.inc");
$strSQL="SELECT service.*,detail.*,COUNT(detail.bg) AS countname FROM service LEFT JOIN detail ON service.ser_no = detail.id WHERE service.bg_no=55";
$objQuery = mssql_query($strSQL) or die ("Error Query [".$strSQL."]");
while($objResult = mssql_fetch_array($objQuery))
{
echo "<font color=red>".$objResult["ser_no"]." </font>";
echo "<font color=red>".$objResult["ser_name"]." </font>";
echo "<font color=red>".$objResult["bg_no"]." </font>";
echo "<font color=red>".$objResult["countname"]." </font>";
echo "<br>";
}
?>
|
 |
 |
 |
 |
Date :
2011-07-16 13:20:05 |
By :
MyZeus |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ทำไมผม COUNT ไม่ได้ครับ
SELECT service.*,detail.*,COUNT(detail.bg) AS countname FROM service LEFT JOIN detail ON service.ser_no = detail.id WHERE service.bg_no=55
|
 |
 |
 |
 |
Date :
2011-07-16 16:28:27 |
By :
MyZeus |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Count แล้วน่าจะต้องใช้ GROUP By ครับ
|
 |
 |
 |
 |
Date :
2011-07-16 19:44:40 |
By :
webmaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Error อยู่เลยครับ
Warning: mssql_query() [function.mssql-query]: message: Column 'detail.id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. (severity 16) in C:\AppServ\www\1799\report_business1.php on line 17
Warning: mssql_query() [function.mssql-query]: Query failed in C:\AppServ\www\1799\report_business1.php on line 17
Error Query [SELECT detail.*,service.*,COUNT(detail.bg) AS countname FROM service LEFT JOIN detail ON service.ser_no = detail.id WHERE service.bg_no=55 GROUP BY detail]
Code (PHP)
$strSQL="SELECT detail.*,service.*,COUNT(detail.bg) AS countname FROM service LEFT JOIN detail ON service.ser_no = detail.id WHERE service.bg_no=55 GROUP BY detail
|
 |
 |
 |
 |
Date :
2011-07-16 20:17:50 |
By :
MyZeus |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
การ GROUP BY จะต้อง GROUP BY ตามจำนวนที่ SELECT ครับ
Go to : SQL GROUP BY
|
 |
 |
 |
 |
Date :
2011-07-16 20:30:26 |
By :
webmaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
$strSQL="SELECT detail.*,service.*,COUNT(detail.bg) AS countname FROM service LEFT JOIN detail ON service.ser_no = detail.id WHERE service.bg_no=55 GROUP BY detail.*,service.*";
Error อยู่ครับ
|
 |
 |
 |
 |
Date :
2011-07-16 20:59:44 |
By :
MyZeus |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
GROUP BY น่าจะใช้ .* ไม่ได้ครับ 
|
 |
 |
 |
 |
Date :
2011-07-16 21:10:18 |
By :
webmaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าจะ select อย่างนั้นก็ต้อง group by มันทุกฟิลด์เลยครับ
|
 |
 |
 |
 |
Date :
2011-07-16 21:13:34 |
By :
PlaKriM |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (PHP)
$strSQL="SELECT detail.service,detail.bg,service.ser_no,service.ser_name,service.bg_no,COUNT(detail.bg) AS countname FROM service LEFT JOIN detail ON service.ser_no = detail.id WHERE service.bg_no=55 GROUP BY detail.id,detail.service,detail.bg,service.ser_no,service.ser_name,service.bg_no";
ทำไมผลลัพธ์มันไม่ยอมไป COUNT ว่า detail.service มีกี่รายการของ detail.bg อะครับ ผลลัพธ์ออกมาคือ 0 ทุกรายการเลย
149 ผลิตภัณฑ์น้ำ 55 0
150 ผลิตภัณฑ์เครื่องดื่มสำเร็จรูป 55 0
151 ผลิตภัณฑ์เครื่องดื่มผสม 55 0
|
 |
 |
 |
 |
Date :
2011-07-16 21:24:32 |
By :
MyZeus |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เงียบเลยอ่าา - -* จะให้ detail.service ไปนับว่ามีรายการของ detail.bg ไงครับ
|
 |
 |
 |
 |
Date :
2011-07-17 08:28:35 |
By :
MyZeus |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่มีใครตอบเลย ขอขุดหน่อยนะครับ
|
 |
 |
 |
 |
Date :
2011-07-17 15:46:42 |
By :
MyZeus |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มีใครช่วยได้มั้งครับ
|
 |
 |
 |
 |
Date :
2011-07-17 19:41:36 |
By :
MyZeus |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ช่วยดูหน่อยคับ
|
 |
 |
 |
 |
Date :
2011-07-19 08:15:41 |
By :
MyZeus |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|