 |
ขอโค๊ดที่จะนับข้อมูลที่ซ้ำกันในดาต้าเบสหน่อยครับ มีรูปตัวอย่าง |
|
 |
|
|
 |
 |
|
ตัวอย่างที่ให้มา มันเป็นค่าเฉลี่ยนี้ครับ Go to : SQL HAVING
ไม่เข้าใจครับว่าจะต้องแก้โค๊ดที่มีอย่างไรบ้าง
|
 |
 |
 |
 |
Date :
2011-11-24 08:08:32 |
By :
okboou |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตัวอย่างที่คุณ WIN ให้มานั้นต้องศึกษาดูให้เข้าใจนะครับ เพราะการนับสิ่งที่เหมือนกันของ SQL จะต้องใช้ GROUP BY เข้ามาช่วย...
แต่ในตัวอย่างเขาอธิบายในส่วนของการ HAVING ซึ่งก็คือการระบุเงื่อนไขครับ ไม่ใช่ค่าเฉลี่ย... ค่าเฉลี่ยในตัวอย่างก็คือฟังก์ชั่น AVG ครับ เพราะฉะนั้นตัวอย่างที่ให้ไปถูกต้องแล้วครับ....
ปล. เพราะถ้าอธิบาย GROUP BY แล้วไม่อธิบายฟังก์ชั่นอื่นต่อก็เอาไปใช้ไม่ได้อยู่ดีครับ
|
 |
 |
 |
 |
Date :
2011-11-24 08:26:56 |
By :
Songkram |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมต้องการนับ ก็ต้องใช้ Count ไม่ใช่เหรอครับ
แต่ตัวอย่างที่ผมเอามานั้นมันนับได้ แต่มันระบุไม่ได้ว่า web มีเท่าไร fb เท่าไร mb เท่าไร
|
ประวัติการแก้ไข 2011-11-24 08:45:38 2011-11-24 08:45:51
 |
 |
 |
 |
Date :
2011-11-24 08:44:13 |
By :
okboou |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอนนี สร้างแบบนี้ ได้แล้วครับ
Code (PHP)
<?php
include "config.php";
$sql="SELECT COUNT(at) AS web FROM tb WHERE at='web' and year (`today_insert`) = '2011' and (month(`today_insert`) = '09') GROUP BY year (`today_insert`) = '2011' and (month(`today_insert`) = '09') ORDER BY counta desc";
$result =mysql_query($sql);
mysql_close();
while($mydata = mysql_fetch_array($result))
{
$web="{$mydata['web']}";
echo "$web";
}
?>
<?php
include "config.php";
$sql="SELECT COUNT(at) AS fb FROM tb WHERE at='fb' and year (`today_insert`) = '2011' and (month(`today_insert`) = '09') GROUP BY year (`today_insert`) = '2011' and (month(`today_insert`) = '09') ORDER BY counta desc";
$result =mysql_query($sql);
mysql_close();
while($mydata = mysql_fetch_array($result))
{
$fb="{$mydata['fb']}";
echo "$fb";
}
?>
<?php
include "config.php";
$sql="SELECT COUNT(at) AS mb FROM tb WHERE at='mb' and year (`today_insert`) = '2011' and (month(`today_insert`) = '09') GROUP BY year (`today_insert`) = '2011' and (month(`today_insert`) = '09') ORDER BY counta desc";
$result =mysql_query($sql);
mysql_close();
while($mydata = mysql_fetch_array($result))
{
$mb="{$mydata['mb']}";
echo "$mb";
}
?>
จะจับมารวมกัน ได้อย่างไรครับ
|
ประวัติการแก้ไข 2011-11-24 10:05:22 2011-11-24 10:06:05
 |
 |
 |
 |
Date :
2011-11-24 10:04:15 |
By :
okboou |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มี 2 แบบให้เลือกครับ โดยการใช้ sql ล้วนๆ..... (ผมอาจจะเขียนตกบางที กรุณาเช็คชื่อตารางด้วย คิดว่าน่าจะเป็น tb_tb)
Code (PHP)
SELECT
tb_tb.at,
Count(tb_tb.at AS count_at
FROM
tb_tb
GROUP BY
tb_tb.at
Code (PHP)
SELECT
SUM(IF(q1.count_at = "fb", q1.count_at,0)) AS `fb`,
SUM(IF(q1.count_at = "mb", q1.count_at,0)) AS `mb`,
SUM(IF(q1.count_at = "web", q1.count_at,0)) AS `web`
FROM
(SELECT tb_tb.at, Count(tb_tb.at) AS count_at FROM tb_tb GROUP BY tb_tb.at) as q1
|
ประวัติการแก้ไข 2011-11-24 10:59:05
 |
 |
 |
 |
Date :
2011-11-24 10:58:40 |
By :
Songkram |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|