 |
สอบถามผู้รู้ครับ หากต้องการให้สรุปข้อมูลออกมาแบบนี้ต้องเขียนโคดยังไงครับ |
|
 |
|
|
 |
 |
|
select x1,x2,count(*) as countID from xxxx group by x1,x2
|
 |
 |
 |
 |
Date :
2014-09-25 15:27:35 |
By :
gaowteen |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (PHP)
$sql="SELECT student_values.stu_id, student.stu_name, student.stu_lanme, student.stu_clase, student.stu_room, student_values.v_id, values12.v_name, student_values.teacher_id, teacher_admin.teacher_name, teacher_admin.teacher_lname, teacher_admin.type, teacher_admin.loginlast, student_values.sv_date, student_values.sv_mouth, student_values.sv_year, student_values.sv_time
FROM ((student INNER JOIN student_values ON student.stu_id = student_values.stu_id) INNER JOIN teacher_admin ON student_values.teacher_id = teacher_admin.teacher_id) INNER JOIN values12 ON student_values.v_id = values12.v_id WHERE student_values.stu_id like '%$textfield%' AND student.stu_name like '%$textfield2%' AND student.stu_lanme like '%$textfield3%' AND student.stu_clase like '%$stu_clase%' AND student.stu_room like '%$textfield4%' ORDER BY student_values.stu_id ASC";
ไม่ทราบว่าหาโคดผมแบบนี้จะแทรกตรงใหนครับ
ต้องการให้ออกมาแบบนี้ครับ

|
 |
 |
 |
 |
Date :
2014-09-25 15:50:10 |
By :
wittayakorn1 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
SELECT distinct student_values.stu_id, student.stu_name, student.stu_lanme, student.stu_clase, student.stu_room, student_values.v_id, values12.v_name, student_values.teacher_id, teacher_admin.teacher_name, teacher_admin.teacher_lname, teacher_admin.type, teacher_admin.loginlast, student_values.sv_date, student_values.sv_mouth, student_values.sv_year, student_values.sv_time
,(select count(*) from student_values where stu_id = student.stu_id and v_id = student_values.v_id) as count_id
FROM ((student
INNER JOIN student_values ON student.stu_id = student_values.stu_id)
INNER JOIN teacher_admin ON student_values.teacher_id = teacher_admin.teacher_id)
INNER JOIN values12 ON student_values.v_id = values12.v_id
WHERE student_values.stu_id LIKE '%$textfield%' AND student.stu_name LIKE '%$textfield2%' AND student.stu_lanme LIKE '%$textfield3%' AND student.stu_clase LIKE '%$stu_clase%' AND student.stu_room LIKE '%$textfield4%'
ORDER BY student_values.stu_id ASC
ลองดู ครับ
|
 |
 |
 |
 |
Date :
2014-09-25 16:14:57 |
By :
gaowteen |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณมากครับท่าน BIrD ยังไม่ได้เหมือนเดิมครับ มันยังออกมากเหมือนไม่ได้เปลี่ยนอะไรเลยครับ
และขอถามเพิ่มว่าหากต้องการให้จำนวนมาโชว์ตรงแถวจำนวนครั้งต้องเขียนอะไรเพิ่มครับ รบกวนอีกครั้งครับ
|
 |
 |
 |
 |
Date :
2014-09-25 16:40:33 |
By :
wittayakorn1 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ที่มันไม่ ได้ เพราะ , teacher_admin.loginlast, student_values.sv_date, student_values.sv_mouth, student_values.sv_year, student_values.sv_time อันนี้หรือป่าวครับ มันไม่เหมือนกัน เลย group ไม่ได้
จะเพิ่มจำนวน ก็
เพิ่ม คอลัม จำนวน แล้วก็ เอา count_id ไป ใส่ครับ
|
 |
 |
 |
 |
Date :
2014-09-25 16:56:38 |
By :
gaowteen |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ได้แล้วครับ แต่ตรงลูกศรสีแดงที่เป็นผลรวมยังไม่ถูกครับ ไม่ทราบว่าต้องทำอย่างไรครับ ขอบคุณมากๆๆครับ

|
 |
 |
 |
 |
Date :
2014-09-25 17:16:04 |
By :
wittayakorn1 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
SELECT student_values.stu_id, student.stu_name, student.stu_lanme, student.stu_clase, student.stu_room, student_values.v_id, values12.v_name, student_values.teacher_id, teacher_admin.teacher_name, teacher_admin.teacher_lname, teacher_admin.type, teacher_admin.loginlast, student_values.sv_date, student_values.sv_mouth, student_values.sv_year, student_values.sv_time
,count(*) as count_id
FROM ((student
INNER JOIN student_values ON student.stu_id = student_values.stu_id)
INNER JOIN teacher_admin ON student_values.teacher_id = teacher_admin.teacher_id)
INNER JOIN values12 ON student_values.v_id = values12.v_id
WHERE student_values.stu_id LIKE '%$textfield%' AND student.stu_name LIKE '%$textfield2%' AND student.stu_lanme LIKE '%$textfield3%' AND student.stu_clase LIKE '%$stu_clase%' AND student.stu_room LIKE '%$textfield4%'
group by student_values.stu_id, student.stu_name, student.stu_lanme, student.stu_clase, student.stu_room, student_values.v_id, values12.v_name, student_values.teacher_id, teacher_admin.teacher_name, teacher_admin.teacher_lname, teacher_admin.type, teacher_admin.loginlast, student_values.sv_date, student_values.sv_mouth, student_values.sv_year, student_values.sv_time
ORDER BY student_values.stu_id ASC
แบบ นี้ เลยครับง่าย ดี 
|
 |
 |
 |
 |
Date :
2014-09-25 17:25:20 |
By :
gaowteen |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณมากครับแต่ผลรวมยังไม่ถูกครับ ตามภาพ ผลรวมมันน่าจะเป็นอย่างละสอง รบกวนอีกรอบครับ

|
 |
 |
 |
 |
Date :
2014-09-25 17:35:06 |
By :
wittayakorn1 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
5555 นั่น ดิ ลืม ครับ
งั้นก็ แบบ เดิม ครับ
SELECT distinct student_values.stu_id, student.stu_name, student.stu_lanme, student.stu_clase, student.stu_room, student_values.v_id, values12.v_name, student_values.teacher_id, teacher_admin.teacher_name, teacher_admin.teacher_lname, teacher_admin.type, teacher_admin.loginlast, student_values.sv_date, student_values.sv_mouth, student_values.sv_year, student_values.sv_time
แก้ให้แล้ว ลองๆๆ
,(select count(*) from student_values a where a.stu_id = student.stu_id and a.v_id = student_values.v_id) as count_id
FROM ((student
INNER JOIN student_values ON student.stu_id = student_values.stu_id)
INNER JOIN teacher_admin ON student_values.teacher_id = teacher_admin.teacher_id)
INNER JOIN values12 ON student_values.v_id = values12.v_id
WHERE student_values.stu_id LIKE '%$textfield%' AND student.stu_name LIKE '%$textfield2%' AND student.stu_lanme LIKE '%$textfield3%' AND student.stu_clase LIKE '%$stu_clase%' AND student.stu_room LIKE '%$textfield4%'
ORDER BY student_values.stu_id ASC
|
 |
 |
 |
 |
Date :
2014-09-25 21:26:49 |
By :
gaowteen |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ด้วยผมไม่รู้ว่า Database Server เป็นอะไร MySql หรือ SqlServer เลยเขียนแบบกลางๆ นะครับ
อันดับแรกคุณต้องหาค่าจำนวนที่ซ้ำก่อน ซึ่งเป็น main detail
select stu_id, v_id, count(v_id) count_V from student_value group by stu_id
แล้ว หารายละเอียดที่ต้องใช้ร่วมกับ ตารางอื่นลงไป
select SV.stu_id, SV.teacher_id
, SV.sv_date
, SV.sv_mouth
, SV.sv_year
, SV.sv_time
, TB1.v_id
, TB1.count_V
from ( select stu_id, v_id, count(v_id) count_V from student_value group by stu_id) as TB1
left join student_values as SV
on sv.stu_id = TB1.stu_id
แล้วนำไป join กับ ตารางอื่นเพื่อให้ได้ สิ่งที่ต้องการเพิ่ม
SELECT
TB2.stu_id,
student.stu_name, student.stu_lanme, student.stu_clase, student.stu_room, student_values.v_id,
values12.v_name, TB2.teacher_id,
teacher_admin.teacher_name, teacher_admin.teacher_lname, teacher_admin.type, teacher_admin.loginlast,
TB2.sv_date, TB2.sv_mouth, TB2.sv_year, TB2.sv_time
FROM (
select SV.stu_id, SV.teacher_id, SV.sv_date, SV.sv_mouth, SV.sv_year, SV.sv_time
, TB1.v_id, TB1.count_V
from ( select stu_id, v_id, count(v_id) count_V from student_value group by stu_id) as TB1
left join student_values as SV
on sv.stu_id = TB1.stu_id
) as TB2
LEFT JOIN student on student.stu_id = TB2.stu_id
LEFT JOIN teacher_admin ON teacher_admin.teacher_id = TB2.teacher_id
LEFT JOIN values12 ON values12.v_id = TB2.v_id
ส่วน ต้องการบางเรคคอร์ดที่ต้องการก็ใส่ where clause ลงไป เข่น
WHERE TB2.stu_id like '%$textfield%'
AND student.stu_name like '%$textfield2%'
AND student.stu_lanme like '%$textfield3%'
AND student.stu_clase like '%$stu_clase%'
AND student.stu_room like '%$textfield4%'
รวมถึงการจัดเรียง
ORDER BY TB2.stu_id ASC; // จัดเรียง ASC ไม่จำเป็น เพราะ มันเรียง เหมือน กับ group by อยู่แล้วครับ
SV และ TB2 เป็น tempolarity table ครับ
ปล. เขียนโดยไม่ได้มีการทดสอบนะครับ เพราะไม่มี ตาราง จะให้ทดสอบ ผิดผลาดประการใดก็ขออภัยนะครับ
|
ประวัติการแก้ไข 2014-09-26 08:20:19 2014-09-26 08:21:42 2014-09-26 08:24:08
 |
 |
 |
 |
Date :
2014-09-26 08:19:54 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ต้องขอขอบคุณท่านทั้งสองมากครับ โดยเฉพาะท่าน Chaidhanan อธิบายได้ชัดเจนมากครับ
|
 |
 |
 |
 |
Date :
2014-09-26 10:30:47 |
By :
wittayakorn1 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|