เรื่องการ Query ข้อมูล
กระทู้เก่าบอร์ด อ.Yeadram

 1,429   4
URL.หัวข้อ / URL
เรื่องการ Query ข้อมูล

ผมมีตารางดังนี้ครับ

ชื่อ วันเดือนปีเกิด   อายุ    เลขที่ทรัพย์สิน วันที่คืนทรัพย์สิน วันยุติเรื่อง


ผมต้องการ Query ข้อมูลโดยให้แสดง เฉพาะเรดคอร์ด ที่
"อายุ" มากกว่าหรือเท่ากับ 20 และ ถ้า "เลขที่ทรัพย์สิน" ไม่ว่าง "วันที่คืนทรัพย์สิน" ต้องไม่ว่าง แต่ถ้า "เลขที่ทรัพย์สิน" ว่าง "วันที่คืนทรัพย์สิน" ต้องว่างด้วย โดย "วันยุติเรื่อง" ต้อง ว่างเสมอ
ผมต้องเขียน sql อย่างไรครับ

4 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R12995
เฉพาะเรดคอร์ด
ที่ "อายุ" มากกว่าหรือเท่ากับ 20 : [อายุ] >= 20
และ: And
ถ้า "เลขที่ทรัพย์สิน" ไม่ว่าง "วันที่คืนทรัพย์สิน" ต้องไม่ว่าง: [เลขที่ทรัพย์สิน] Not Is Null And [วันที่คืนทรัพย์สิน] Not Is Null
แต่: Or
ถ้า "เลขที่ทรัพย์สิน" ว่าง "วันที่คืนทรัพย์สิน" ต้องว่างด้วย: [เลขที่ทรัพย์สิน] Is Null And [วันที่คืนทรัพย์สิน] Is Null
โดย "วันยุติเรื่อง" ต้อง ว่างเสมอ: [วันยุติเรื่อง] Is Null

สรุปประมาณนี้ครับ
Select ...
From ...
Where [อายุ] >= 20
And
(
([เลขที่ทรัพย์สิน] Not Is Null) And ([วันที่คืนทรัพย์สิน] Not Is Null)
Or
([เลขที่ทรัพย์สิน] Is Null) And ([วันที่คืนทรัพย์สิน] Is Null)
)
And
[วันยุติเรื่อง] Is Null
2 @R12996
where (age>=20) and
(iif(isnull(rentNo) and isnull(rentDateBack), "NullRent","")="NullRent") and
(iif(not isnull(rentNo) and not isnull(rentDateBack), "HaveRent","")="HaveRent") and
(isnull(FinishDate))
3 @R13002
ได้แล้วครับตามวิธีการของอาจารย์ PichaiTC
ส่วนวิธีของอาจารย์ yeadram ได้ผลการ Query ไม่ตรงครับ คือ ลองแล้วในตารางมีข้อมูลหนึ่งแถวที่ตรงกับเงื่อนไขที่ผมบอกไว้แต่มันไม่แสดงออกมาครับ

แต่อย่างไรก็ตามต้องขอขอบคุณอาจารย์ทั้งสองท่านที่ให้ความช่วยเหลือครับ
4 @R13005
ผมว่ากรณีนี้เป็น กรณีศึกษาได้นะครับ
ผมคิดว่าการสร้าง condition แบบนี้ไม่ใช่เรีืองยากเลย
ถ้าเราสามารถสร้างประโยคเงื่อนไข(ภาษาคน) ที่ถูกต้องได้ เราก็จะสามารถแปลงเป็นภาษา comp. ได้ง่ายๆเพียงแค่รู้คำสั่ง
แต่สิ่งผิดพลาดที่มักจะพบ คือ ประโยคเงื่อนไขที่สร้างขึ้นมามักจะไม่ถูกต้อง
เช่นกรณีนี้ คำว่า "ถ้า" วางไว้ผิดที่ ทำให้ตีความว่าต้องใช้ iif(),
และคำว่า "แต่" เป็นคำที่ตีความยาก เพราะ "แต่" บางครั้งเป็น And หรือ OR ก็ได้

อีกคำ "หรือ" นี่น่ากลัว เพราะอาจจะเป็น OR (a OR b --> only a = true, only b = true, a and b = true, not a and not b = false)
หรือ XOR (exclusive or; a XOR b --> only a = true, only b = true, a and b = false, not a and not b = false)

เพราะฉะนั้น ก่อนจะคิดว่าต้องเขียน ภาษาคอม (code) อย่างไร คิดให้ดีก่อนว่าเราคิด ภาษาคน ได้ถูกหรือยัง

*** แถม;- "ถึงผมจะหล่อ แต่ ผมก็ฉลาดนะ"
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.1742s