กระทู้เก่าบอร์ด อ.Yeadram
2,139 5
URL.หัวข้อ /
URL
เขียนโค้ดยังไงคะ มือใหม่คะ
ชื่อตารางคือ HP คะ
หากต้องการนับจำนวนเรคคอร์ดดูว่า บริษัท ไทย ออโต้ เทค จำกัด(ตามภาพคะ)
มีจำนวน HPACCT กี่ เรคคอร์ด ต้องเขียนโค้ดยังไงคะ ช่วยหน่อยคะ
ขอแบบอธิบายเป็นบรรทัดนะคะ อยากทราบรายละเอียด
5 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R04208
ตอบ (R04202)
แบบนั้นไม่ถูกต้องดีนัก
- ถ้าไม่ต้องการระบุ ให้ตัด Where ออกไปเลยครับ ไม่ต้องระบุ ดับเบิลโควต
select CIFNO, COUNT(*) AS CNT from hp1 GROUP BY CIFNO;
- ถ้าต้องการระบุเป็น cifno ตัวอื่นก็ค่อยใส่เข้าไป
select CIFNO, COUNT(*) AS CNT from hp1 where CIFNO="002255" GROUP BY CIFNO;
- หรือถ้าต้องการให้ผู้ใช้ระบุเอง ก็ให้ใช้เป็นแบบการเติมพารามิเตอร์ครับ
select CIFNO, COUNT(*) AS CNT from hp1 where CIFNO= [กรุณาระบุ CIFNO] GROUP BY CIFNO;
ตอบ (R04204)
เกือบถูกแล้วครับ การระบุเงื่อนไขนะครับ ต้องดูว่า ฟิลด์ที่เราจะใส่เงื่อนไข เป็นชนิดข้อมูลอะไร ซึ่งผมดูจากภาพตัวอย่างที่คุณ sudteerak อัพมาให้ดูสังเกตเห็นว่า ฟิลด์ status น่าจะเก็บข้อมูลเป็น ตัวเลข เพราะฉะนั้น เมื่ออยู่ใน Where ก็ไม่ต้องใส่ เครื่องหมายฟันหนู (double quote) ในค่าของเงื่อนไขครับ
SELECT hp1.CIFNO, Count(*) AS CNT
FROM hp1 where STATUS=1 Or STATUS = 3
GROUP BY hp1.CIFNO;
หรือ
SELECT hp1.CIFNO, Count(*) AS CNT
FROM hp1 where STATUS=(1 or 3)
GROUP BY hp1.CIFNO;
หรือ
SELECT hp1.CIFNO, Count(*) AS CNT
FROM hp1 where STATUS IN(1,3)
GROUP BY hp1.CIFNO;
การเขียน statement เพื่อให้ SQL อ่านต้องระวังเรื่องเครื่องหมาย, เรื่องวรรคตอนด้วยครับ ระวังมันจะ เอ๋อเร๋อ ................. อิอิ
แบบนั้นไม่ถูกต้องดีนัก
- ถ้าไม่ต้องการระบุ ให้ตัด Where ออกไปเลยครับ ไม่ต้องระบุ ดับเบิลโควต
select CIFNO, COUNT(*) AS CNT from hp1 GROUP BY CIFNO;
- ถ้าต้องการระบุเป็น cifno ตัวอื่นก็ค่อยใส่เข้าไป
select CIFNO, COUNT(*) AS CNT from hp1 where CIFNO="002255" GROUP BY CIFNO;
- หรือถ้าต้องการให้ผู้ใช้ระบุเอง ก็ให้ใช้เป็นแบบการเติมพารามิเตอร์ครับ
select CIFNO, COUNT(*) AS CNT from hp1 where CIFNO= [กรุณาระบุ CIFNO] GROUP BY CIFNO;
ตอบ (R04204)
เกือบถูกแล้วครับ การระบุเงื่อนไขนะครับ ต้องดูว่า ฟิลด์ที่เราจะใส่เงื่อนไข เป็นชนิดข้อมูลอะไร ซึ่งผมดูจากภาพตัวอย่างที่คุณ sudteerak อัพมาให้ดูสังเกตเห็นว่า ฟิลด์ status น่าจะเก็บข้อมูลเป็น ตัวเลข เพราะฉะนั้น เมื่ออยู่ใน Where ก็ไม่ต้องใส่ เครื่องหมายฟันหนู (double quote) ในค่าของเงื่อนไขครับ
SELECT hp1.CIFNO, Count(*) AS CNT
FROM hp1 where STATUS=1 Or STATUS = 3
GROUP BY hp1.CIFNO;
หรือ
SELECT hp1.CIFNO, Count(*) AS CNT
FROM hp1 where STATUS=(1 or 3)
GROUP BY hp1.CIFNO;
หรือ
SELECT hp1.CIFNO, Count(*) AS CNT
FROM hp1 where STATUS IN(1,3)
GROUP BY hp1.CIFNO;
การเขียน statement เพื่อให้ SQL อ่านต้องระวังเรื่องเครื่องหมาย, เรื่องวรรคตอนด้วยครับ ระวังมันจะ เอ๋อเร๋อ ................. อิอิ
3 @R04223
ข้อ 1 ถึง ข้อ 2.1 เขียน statement ได้ว่า
SELECT HP.CIFNO, ACNAME, HPACCT, PDDAY
FROM HP INNER JOIN HP1 ON HP.CIFNO=HP1.CIFNO
WHERE HP1.STATUS=1 OR HP1.STATUS=3;
ส่วนข้อ 2.2 ไม่เข้าใจโจทก์ครับ
แบ่งเป็น 3 ช่วง???
แสดงผลอย่างไร???
SELECT HP.CIFNO, ACNAME, HPACCT, PDDAY
FROM HP INNER JOIN HP1 ON HP.CIFNO=HP1.CIFNO
WHERE HP1.STATUS=1 OR HP1.STATUS=3;
ส่วนข้อ 2.2 ไม่เข้าใจโจทก์ครับ
แบ่งเป็น 3 ช่วง???
แสดงผลอย่างไร???
4 @R04235
SELECT HP.CIFNO, ACNAME, HPACCT, PDDAY
iif(PDDAY=0,"Y","") AS STEP1,
iif(PDDAY>0 AND PDDAY30 AND PDDAY60 AND PDDAY90,"Y","") AS STEP5
FROM HP INNER JOIN HP1 ON HP.CIFNO=HP1.CIFNO
WHERE HP1.STATUS=1 OR HP1.STATUS=3;
คำว่า STEP1, STEP2, ....
คือคำที่สวรรค์ประทานมาในห้วงความฝัน...........
iif(PDDAY=0,"Y","") AS STEP1,
iif(PDDAY>0 AND PDDAY30 AND PDDAY60 AND PDDAY90,"Y","") AS STEP5
FROM HP INNER JOIN HP1 ON HP.CIFNO=HP1.CIFNO
WHERE HP1.STATUS=1 OR HP1.STATUS=3;
คำว่า STEP1, STEP2, ....
คือคำที่สวรรค์ประทานมาในห้วงความฝัน...........
5 @R04252
การโพสต์โค้ดยาวๆ มันอาจจะมีเครื่องหมายเยอะแยะ ซึ่งมันมีปัญหากับ สคริปต์ของเว็บบอร์ดครับ จึงทำให้ มันไปไม่ครบทุกเครื่องหมาย ทุกอักขระ
และผมเอง พอกดโพสต์เสร็จก็ไม่ได้ดูด้วยว่า มันไปครบหรือเปล่า ต้องขออภัยด้วยครับ
ครั้งนี้ผมลองโพสต์ใหม่ครับ น่าจะไปครบนะครับ เพราะใส่กรอบเอาไว้
SELECT HP.CIFNO, ACNAME, HPACCT, PDDAY,
iif(HP1.[PDDAY]=0,"Y","") AS STEP1,
iif(HP1.[PDDAY] > 0 AND HP1.[PDDAY] < 30, "Y","") AS STEP2,
iif(HP1.[PDDAY] >= 30 AND HP1.[PDDAY] < 60, "Y","") AS STEP3,
iif(HP1.[PDDAY] >= 60 AND HP1.[PDDAY] < 90, "Y","") AS STEP4,
iif(HP1.[PDDAY] >= 90,"Y","") AS STEP5
FROM HP INNER JOIN HP1 ON HP.CIFNO=HP1.CIFNO
WHERE HP1.STATUS=1 OR HP1.STATUS=3;
การโพสต์โค้ดยาวๆ มันอาจจะมีเครื่องหมายเยอะแยะ ซึ่งมันมีปัญหากับ สคริปต์ของเว็บบอร์ดครับ จึงทำให้ มันไปไม่ครบทุกเครื่องหมาย ทุกอักขระ
และผมเอง พอกดโพสต์เสร็จก็ไม่ได้ดูด้วยว่า มันไปครบหรือเปล่า ต้องขออภัยด้วยครับ
ครั้งนี้ผมลองโพสต์ใหม่ครับ น่าจะไปครบนะครับ เพราะใส่กรอบเอาไว้
Time: 0.4834s
เช่น ต้องการให้แสดงผลทางค?วรี่ ก็เขียน statement ว่า
select CIFNO, COUNT(*) AS CNT from hp1 where CIFNO=51000550 GROUP BY CIFNO;
เอาไปสร้างคิวรี่ครับ เมื่อแสดงผลคิวรี่ ก็จะได้จำนวนนับที่ต้องการครับ อยู่ในคอลัมภ์ที่ 2 ชื่อคอลัมภ์ว่า CNT
หรือถ้าต้องการให้ปรากฏใน textbox หน้าฟอร์ม
- สร้าง textbox เปล่าๆ ตัวหนึ่ง
- เขียนนิพจน์ใน textbox ตัวนั้นว่า
=Dcount("HPACCT","HP1","[CIFNO] = 51000550")
เมื่อรันฟอร์มแสดงผล textbox ตัวนี้ก็จะให้คำตอบที่ต้องการครับ