Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > ขอความช่วยเหลือหน่อยครับ เกี่ยวกับคำสั่ง SQL ในการ Select ข้อมูลออกมา



 

ขอความช่วยเหลือหน่อยครับ เกี่ยวกับคำสั่ง SQL ในการ Select ข้อมูลออกมา

 



Topic : 064213



โพสกระทู้ ( 93 )
บทความ ( 0 )



สถานะออฟไลน์




ขอความช่วยเหลือหน่อยครับ เกี่ยวกับคำสั่ง SQL ในการ Select ข้อมูลออกมา

สรุป: ไม่ให้ออกวันซ้ำนั้นเอง ซึ่งจะต้องหาค่าในช่วงทุกๆช่วงด้วย ว่ามันมีวันที่อะไรบ้าง

ตารางข้อมูล: ตารางรายละเอียดใบแจ้งค่าใช้บริการ
Table

• Bill_ID = เลขที่ใบแจ้งค่าใช้บริการ
• Company = บริษัท
• Start_Date = วันที่เริ่มต้นรอบค่าใช้บริการ
• End_Date = วันที่สิ้นสุดรอบค่าใช้บริการ

ปัญหาคือ: เวลาออกใบแจ้งค่าใช้บริการใหม่ จะต้องเอา “วันที่เริ่มต้นรอบค่าใช้บริการ (Start_Date)” และ “วันที่สิ้นสุดรอบค่าใช้บริการ (End_Date)” ที่กรอกเข้ามาใหม่ นำมาตรวจสอบในฐานข้อมูลว่ามีการออกใบแจ้งค่าใช้บริการในรอบนี้ไปแล้วหรือยัง?

ตัวอย่าง: จะออกใบแจ้งค่าใช้บริการหมายเลข 007,
บริษัท Company B,
วันที่เริ่มต้นรอบค่าใช้บริการ 2011-05-15,
วันที่สิ้นสุดรอบค่าใช้บริการ 2011-06-15
ซึ่งปรากฏว่าวันที่ 2011-05-15 – 2011-06-15 ได้ออกไปแล้ว!!!

คำถาม: จะทราบได้อย่างไรว่ารอบค่าใช้บริการที่เข้ามาใหม่นั้น ไม่ซ้ำกับของเดิมที่ได้ออกไปแล้ว?

กรณีที่จะทำให้เกิดรอบค่าใช้บริการที่ซ้ำซ้อน
1. รอบค่าใช้บริการค่อมวันที่เริ่มต้นรอบค่าใช้บริการ เช่น 2011-04-15 ถึง 2011-05-15
ซึ่งวันที่ 2011-05-01 ถึง 2011-05-15 ได้ออกไปแล้ว

2. รอบค่าใช้บริการค่อมวันที่สิ้นสุดรอบค่าใช้บริการ เช่น 2011-07-15 ถึง 2011-08-15
ซึ่งวันที่ 2011-07-15 ถึง 2011-07-31 ได้ออกไปแล้ว

3. รอบค่าใช้บริการค่อมกับรอบค่าใช้บริการทั้งหมดที่ออกไปแล้ว เช่น 2011-04-01 ถึง 2011-08-31
ซึ่งรอบค่าใช้บริการตั้งแต่วันที่ 2011-05-01 ถึง 2011-07-31 ได้ออกไปแล้ว

4. รอบค่าใช้บริการอยู่ในรอบที่ออกไปแล้ว เช่น 2011-06-15 ถึง 2011-06-29 ซึ่งอยู่ในช่วงที่ออกไปแล้ว

5. อื่นๆ (จำไม่ได้แล้วว่ามีแบบไหนอีก…ไม่ได้จดไว้)

#Code

Select Bill_ID From Bill_Info WHERE Bill_Info.Company = 'Company B'
AND(
(Bill_Info.Start_Date >= '2011-05-15' AND Bill_Info.Start_Date <= '2011-05-15')
OR (Bill_Info.Start_Date >= '2011-05-15' OR Bill_Info.Start_Date <= '2011-05-15')
OR (Bill_Info.End_Date >= '2011-06-15' AND Bill_Info.End_Date <= '2011-06-15')
OR (Bill_Info.End_Date >= '2011-06-15' OR Bill_Info.End_Date <= '2011-06-15')
)

Select Bill_ID From Bill_Info WHERE Bill_Info.Company = 'Company B'
AND Bill_Info.Start_Date Between '2011-05-15' AND '2011-06-15' AND Bill_Info.End_Date Between '2011-05-15' AND '2011-06-15'

นำค่าที่รับเข้ามา เข้าไปค้นหาในฐานข้อมูล ถ้าไม่พบก็จะให้ออกใบแจ้งค่าใช้บริการนั้นได้
ลองหลายแบบแล้วก็ยังไม่ได้เรื่อง ป้องกันได้จุดหนึ่งแต่อีกจุดหนึ่งกันไม่ได้
แก้กันไม่จบเสียที นั่งแก้มาสองวันแล้วยังไม่ได้เลยโจทย์นี้

#Code Update
< AND (Bill_Info.Start_Date <= '2011-04-04 00:00:00' AND Bill_Info.End_Date >= '2011-04-04 00:00:00') OR (Bill_Info.Start_Date <= '2011-04-06 23:59:59' AND Bill_Info.End_Date >= '2011-04-06 23:59:59') >
โค้ดที่ใช้อยู่ในตอนนี้ ใช้ได้เกือบทุกกรณีที่กล่าวมา ยกเว้นวันที่เลือกมันมันคร่อมค่าทั้งหมด
เช่น วันที่น้อยที่สุดใน Start_Date = 2011-05-05 และค่าที่มากที่สุดใน End_Date = 2011-08-05
แต่ข้อมูลที่ Input เข้ามาคร่อมช่วงนี้ก็จะดักไม่ได้ ตัวอย่าง รับ 2011-05-04 ถึง 2011-08-06 ก็จะดักไม่ได้
(กำลังหายวิธีดัก Max Min อยู่...)



Tag : .NET, Ms SQL Server 2008, Web (ASP.NET), C#, VS 2005 (.NET 2.x)









ประวัติการแก้ไข
2011-08-03 16:14:56
2011-08-03 16:15:22
2011-08-03 16:15:51
2011-08-03 16:17:37
2011-08-03 16:18:54
2011-08-03 19:49:27
2011-08-03 19:49:56
2011-08-08 08:23:12
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2011-08-03 16:13:46 By : Marcuz View : 1431 Reply : 8
 

 

No. 1



โพสกระทู้ ( 93 )
บทความ ( 0 )



สถานะออฟไลน์


หมวดนี้ช่างเงียบเหงาอะไรเช่นนี้ จะมีผู้รู้มาตอบคำถามผมไหมนี่






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-03 16:28:08 By : Marcuz
 


 

No. 2



โพสกระทู้ ( 1,348 )
บทความ ( 1 )



สถานะออฟไลน์


การออกใบแจ้งหนี้ค่าบริการ
ต้องออกวันที่ที่ต่อเนื่องกันอยู่แล้ว
เพราะฉะนั้น ทำไมไม่เอา End_Date ของรายการล่าสุดของ Company B
มาเลยล่ะครับ
เช่นตัวอย่างนี้ Company B ออกถึง 2011-07-31
ก็แสดงว่าต้องมี 2011-05-15 – 2011-06-15 อยู่แล้ว
มิใช่หรือครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-04 08:14:30 By : watcharop
 

 

No. 3

Guest


เช็ควันที่ทำไมไม่เช็คทั้งหมดอ่ะ ทำไมต้องกำหนดวันที่ตายตัวด้วยอ่ะ !
นำค่าวันที่ ที่จะใช้ไปเช็ควันที่เริ่มต้นและวันที่สิ้นสุดในด้าต้าเบส !
ถ้าแยกบริษัทก็เช็คด้วยว่าบริษัทนี้เปิดบิลไปยัง !

select __, __, __ from table where ((ตัวแปร <= Start_Date) OR (ตัวแปร >= End_Date)) ประมาณนี้ไปลอง Test ดูหรือใช้ Between ก็ได้ !!!
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-04 10:17:30 By : T€$T
 


 

No. 4



โพสกระทู้ ( 93 )
บทความ ( 0 )



สถานะออฟไลน์


ได้แล้วครับ ขอบคุณทุกๆท่านมากครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-04 13:03:28 By : Marcuz
 


 

No. 5

Guest


ตอบความคิดเห็นที่ : 4 เขียนโดย : Marcuz เมื่อวันที่ 2011-08-04 13:03:28
รายละเอียดของการตอบ ::
ทำได้แล้วกรุณาช่วยเอาโค๊ตมาแปะไว้ด้วยครับ ! จะได้เป็น ตย. ให้คนอื่น ๆ ที่ต้องการประมาณคุณ !!!

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-05 15:10:48 By : @teenee
 


 

No. 6

Guest


ตอบความคิดเห็นที่ : 5 เขียนโดย : @teenee เมื่อวันที่ 2011-08-05 15:10:48
รายละเอียดของการตอบ ::
คนอื่นจะได้ง่ายต่อการนำไปใช้สิน่ะ (ผมว่าอย่าโพสเลยครับ ศึกษาเองที่สุด)

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-05 15:43:21 By : misax
 


 

No. 7

Guest


ตอบความคิดเห็นที่ : 6 เขียนโดย : misax เมื่อวันที่ 2011-08-05 15:43:21
รายละเอียดของการตอบ ::
เค้าเรียกว่าวิทยาทานครับ ! สังคมแห่งการเรียนรู้ การแบ่งปัน ????

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-06 16:14:13 By : @teenee
 


 

No. 8



โพสกระทู้ ( 93 )
บทความ ( 0 )



สถานะออฟไลน์


Code (C#)
" WHERE ((StartDate >= '" + strStartDate + "' AND StartDate <= '" + strEndDate + "')" + 
" OR (EndDate >= '" + strStartDate + "' AND EndDate <= '" + strEndDate + "')" + 
" OR (StartDate <= '" + strStartDate + "' AND EndDate >= '" + strStartDate + "')" + 
" OR (StartDate <= '" + strEndDate + "' AND EndDate >= '" + strEndDate + "'))"


ได้แล้วครับ โค้ดสมบูรณ์แบบ ได้ครบทุกเงื่อนไข


ประวัติการแก้ไข
2011-09-01 13:06:26
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-01 13:06:12 By : Marcuz
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ขอความช่วยเหลือหน่อยครับ เกี่ยวกับคำสั่ง SQL ในการ Select ข้อมูลออกมา
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่