 |
|
|
 |
 |
|
count + group by + innet join 
|
 |
 |
 |
 |
Date :
2010-01-08 15:55:39 |
By :
plakrim |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอตัวอย่างได้ไหมคะพี่.............PlaKriM 
ขอบคุณคะ
|
 |
 |
 |
 |
Date :
2010-01-08 16:03:28 |
By :
muay028 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เอา db มาลองหน่อย ไม่ชัวร์ เขียนสดเดี๋ยวคุณแม่ไม่ปลื้ม 
|
 |
 |
 |
 |
Date :
2010-01-08 16:05:29 |
By :
plakrim |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
หมายความว่าจะนับจำนวนอาจารย์ ว่า กลุ่มสาระนี้มีกี่คน แบ่งเป็นชายกี่คน หญิงกี่คน แบบนี้ใช่ไหมคะ
|
 |
 |
 |
 |
Date :
2010-01-08 16:09:46 |
By :
ultrasiam |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตารางteacher คือ อาจารย์

|
 |
 |
 |
 |
Date :
2010-01-08 16:15:08 |
By :
muay028 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตาราง gro คือ ตารางกลุ่มสาระการเรียนรู้

|
 |
 |
 |
 |
Date :
2010-01-08 16:17:53 |
By :
muay028 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าเขียนทีละ statement ง่ายกว่าไหมคะ
เช่น...
1 select count(อาจารย์) from ตาราง left join ตาราง using (รหัสกลุ่มสาระ) group by กลุ่มสาระ
ก็จะได้จำนวนอาจารย์ในแต่ละกลุ่ม
2 แล้วมา select count จำนวนอาจารย์ group ตาม เพศ ของแต่ละกลุ่มอีกที
หรือจะทำข้อ 2 แล้วเอามาบวกกัน ก็จะได้ข้อ 1 แบบนี้ก็น่าจะได้นะคะ
|
 |
 |
 |
 |
Date :
2010-01-08 16:26:12 |
By :
ultrasiam |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
โอ้ ตารางมาแล้ว ขออภัยค่ะ เมื่อกี้ไม่เห็น อิอิ
ว่าแต่สอง table นี้ เชื่อมกันด้วย gro_name หรือคะ นึกว่าใช้ id_gro ซะอีก
|
 |
 |
 |
 |
Date :
2010-01-08 16:28:43 |
By :
ultrasiam |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
กรรม export มาซิครับ 
|
 |
 |
 |
 |
Date :
2010-01-08 16:46:19 |
By :
plakrim |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
select count(id_teacher) from teacher group by gro_name
จะได้จำนวนอาจารย์แบ่งตามกลุ่มสาระค่ะ
ลองดูก่อนนะคะ
เรื่องพวกนี้ การเขียนโปรแกรมก็ช่วยได้เหมือนกัน ต้องดูการแสดงผลด้วยค่ะว่าต้องการแบบไหน
แสดงทีกละ กลุ่ม หรือแสดง ทุกกลุ่ม
|
 |
 |
 |
 |
Date :
2010-01-08 16:49:38 |
By :
ultrasiam |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แสดงทุกกลุ่มคะ
ยังไงก็ขอบคุณที่แนะนำนะคะ คุณ ultrasiam
เดี่ยวจะนำไปทำดูนะคะ
ถ้าไม่ได้อย่างไรก็ขอปรึกษาอีกนะคะ

|
 |
 |
 |
 |
Date :
2010-01-08 16:56:12 |
By :
muay028 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
select gro_name,teac_sex,count(id_teacher) from teacher group by gro_name,teac_sex
ลองดูนะคะ
จะได้ข้อมูล
กลุ่มสาระ เพศ จำนวน
1 ชาย n
1 หญิง n
2 ชาย n
2 หญิง n
ประมาณนี้นะคะ ที่เหลือก็เขียนโปรแกรมแสดงเอานะคะ หุหุ จินตนาการล้วน ๆ ไม่มีฐานข้อมูลจริง
|
 |
 |
 |
 |
Date :
2010-01-08 17:33:07 |
By :
ultrasiam |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
SELECT gro_name, count(teac_sex) FROM teacher GROUP BY gro_name
จะได้ผลดังนี้

อยากทราบว่าถ้าจะให้แสดงแยกเป็นชายกับหญิงต้องทำอย่างไรคะ
|
 |
 |
 |
 |
Date :
2010-01-09 13:41:33 |
By :
muay028 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
select gro_name,teac_sex,count(id_teacher) from teacher group by gro_name,teac_sex
ตามนี้ค่ะ ที่บอกไปแล้ว ลองหรือยังคะ
|
 |
 |
 |
 |
Date :
2010-01-09 21:07:34 |
By :
ultrasiam |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองแล้วคะ
แต่ว่าจะให้มันแสดงขึ้นมาไม่รู้ว่าจะทำอย่างไร
|
 |
 |
 |
 |
Date :
2010-01-10 14:22:00 |
By :
muay028 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่รู้ว่าได้หรือยัง
คิดว่าคุณคงอยากจะได้ข้อมูลเป็นชุดเดียวกัน คือ
กลุ่มที่ 1 ชาย n คน หญิง n คน รวม n คน
กลุ่มที่ 2 ชาย n คน หญิง n คน รวม n คน
......
แบบนี้
แต่ sql ที่ให้ไปจะได้มาเป็นคนละชุดคือ
กลุ่มที่ 1 ชาย n คน
กลุ่มที่ 1 หญิง n คน
กลุ่มที่ 2 ชาย n คน
กลุ่มที่ 2 หญิง n คน
จึงต้องมีการจัดกลุ่มข้อมูลใหม่
คิดว่าอาจจะมีวิธีที่ง่ายกว่า คือการการ select ข้อมูลเอามาเก็บไว้ในตัวแปรทีละตัวก่อน
* ไม่ค่อยถนัด sql เท่าไหร่ ถนัดแบบนี้มากกว่า อิอิ
ตัวอย่าง
Code (PHP)
/*======กลุ่ม======*/
$sqlgroup="select gro_name from gro order by id_gro";
$querygroup=mysql_query($sqlgroup);
while($resultgroup=mysql_fetch_array($querygroup)){
/*======ชาย======*/
$sqlmale="select count(sex) as numsex from teacher where gro_name='".$resultgroup[gro_name]."' and sex=0";
$querymale=mysql_query($sqlmale);
$resultmale=mysql_fetch_array($querymale);
/*======หญิง======*/
$sqlfemale="select count(sex) as numsex from teacher where gro_name='".$resultgroup[gro_name]."' and sex=1";
$queryfemale=mysql_query($sqlfemale);
$resultfemale=mysql_fetch_array($queryfemale);
echo "กลุ่ม ".$resultgroup[gro_name]." ชาย ".$resultmale[numsex]." คน หญิง ".$resultfemale[numsex]." รวม ".($resultmale[numsex]+$resultfemale[numsex])." คน<br>";
}
|
 |
 |
 |
 |
Date :
2010-01-10 17:50:39 |
By :
ultrasiam |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณสำหรับคำแนะนะนะค่ะ คุณ ultrasiam 
|
 |
 |
 |
 |
Date :
2010-01-11 12:46:50 |
By :
muay028 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
numsex คืออะไรคะ หรือว่าจะใช้เป็นชื่ออะไรก็ได้
|
 |
 |
 |
 |
Date :
2010-01-12 14:08:33 |
By :
muay028 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คือตัวนี้ค่ะ
Code (PHP)
select count(sex) as numsex
คุณ as ด้วยอะไร ก็ใช้อันนั้นค่ะ
ถ้าไม่มีก็ใช้ $resultmale[0] แทนค่ะ
|
 |
 |
 |
 |
Date :
2010-01-12 15:06:45 |
By :
ultrasiam |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
and teac_sex='ชาย'"
|
 |
 |
 |
 |
Date :
2010-01-14 09:32:19 |
By :
ความรู้เท่าหางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
id_gro='".$resultgroup['id_gro']."'
\www\management\schoolteacher.php on line 174 << มันตรงไหนเหรอคับ
|
 |
 |
 |
 |
Date :
2010-01-14 09:41:32 |
By :
ความรู้เท่าหางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
echo ตรง $sqlmale มาดู ว่าคำสั่ง SQL มันถูกหรือเปล่า
|
 |
 |
 |
 |
Date :
2010-01-14 09:43:12 |
By :
ความรู้เท่าหางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คุณคงเข้าใจอะไรผิดเกี่ยวกับการ as ใน sql ขออภัยที่ไม่ได้อธิบายให้ละเอียดค่ะ
ที่บอกไปว่า as อะไรก็ ใช้อันนั้น ถ้าไม่มีก็ใช้ $resultmale[0] แทน
หมายถึง
ถ้า count(sex) as numsex ก็ให้ใช้ $resultmale[numsex] หรือ $resultmale[0]
ถ้า count(sex) as total ก็ให้ใช้ $resultmale[total] หรือ $resultmale[0]
หรือถ้าไมไ่ด้ as เช่น select count(sex) from... ก็ให้ใช้ $resultmale[0] ค่ะ
ส่วน error ของคุณเพราะ sql query ไมไ่ด้ ลองแก้เป็นแบบนี้นะคะ
Code (PHP)
$sqlgroup="select * from gro order by id_gro";
$querygroup=mysql_query($sqlgroup);
while($resultgroup=mysql_fetch_array($querygroup)){
/*======ชาย======*/
$sqlmale="select count(teac_sex) as num from teacher where id_gro=".$resultgroup[id_gro]." and teac_sex='ชาย'";
$querymale=mysql_query($sqlmale);
$resultmale=mysql_fetch_array($querymale);
echo "กลุ่ม ".$resultgroup[gro_name]." ชาย ".$resultmale[num]." คน <br>";
}
|
 |
 |
 |
 |
Date :
2010-01-14 09:43:26 |
By :
ultrasiam |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ทำได้แล้วคะ
ขอบคุณมากเลยนะคะ
ถ้าไม่ได้คำแนะนำคงแย่แน่เลย
 
ขอบคุณทุกๆ คำแนะนำนะคะ
+1คะ
|
 |
 |
 |
 |
Date :
2010-01-14 09:53:47 |
By :
muay028 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เพิ่มตรงไหนเหรอคับ
|
 |
 |
 |
 |
Date :
2010-01-14 10:00:43 |
By :
ความรู้เท่าหางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แก้ไขตามที่คุณ ultrasiam บอกคะ
|
 |
 |
 |
 |
Date :
2010-01-14 11:14:52 |
By :
muay028 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|