 |
สามารถตรวจเช็คคาบเวลาได้อย่างไรบ้างครับ(เกี่ยวกับการจอง ห้ามจองทับวัน) รบกวนเข้ามาอ่านรายละเอียดข้างในครับ บน topic มันยาวไป |
|
 |
|
|
 |
 |
|
"สามารถตรวจเช็คคาบเวลาได้อย่างไรบ้างครับ(เกี่ยวกับการจอง ห้ามจองทับวัน) รายละเอียดมาอ่านข้างในครับ บน topic มันยาวไป"
อันนี้เป็ยโปรยหัวเรื่องของคนที่ต้องการความช่วยเหลือเหรอครับ แบบข้างล่างจะดีกว่าไหม
สามารถตรวจเช็คคาบเวลาได้อย่างไรบ้างครับ(เกี่ยวกับการจอง ห้ามจองทับวัน) รบกวนอ่านรายละเอียดข้างในครับ บน topic มันยาวไป
เกิดเป็นคนไทยควรรู้จักใช้ภาษาไทยให้มันดีกว่านี้นะครับ
|
 |
 |
 |
 |
Date :
2020-01-30 19:09:14 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
สำหรับเรื่อง topic กระทู้ต้องขออภัยอย่างสูงครับ
ส่วนเรื่องเนื้อหา พอมีใครทราบไหมครับ
|
 |
 |
 |
 |
Date :
2020-01-30 20:46:44 |
By :
jameslufz |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอนนี้คุณออกแบบ database ยังไม่ตอบสนองความต้องการที่เป็นจริง ลองคิดดีๆคุณขาดอะไรไป
หลังจากนั้น ถ้าหาคำตอบได้
- ไปหาความหมายของ WHERE NOT IN ก่อนมันคืออะไร
- ไปหาความหมายของ Between
ถ้าเข้าใจความหมาย 2 ตัวนี้ นำมา Dev เข้าด้วยกันแล้วจะแสดงผล
หรือ
ถ้าไม่ใช้ Between ใช้ > หรือ < ก็สามารถทำได้
|
 |
 |
 |
 |
Date :
2020-01-30 21:21:37 |
By :
Genesis™ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แนะนิดนึง ข้อมูลใน Field วันที่ให้ใช้ Type date
และรูปแบบการเปรียบเทียบ ถ้าเป็น text ให้ใช้ 2020-01-31 แทนการใช้ 12/01/2020
ต้องเข้าใจลักษณะ Priority ของวันที่
ปี จะมี priority สูงกว่า เดือน ๆ สูงกว่า วัน จัดวางลำดับให้เหมือนกับ ตัวเลข หลักหน่วย สิบ ร้อย พัน....
ค่ามาก จะถูกวางไว้ ด้าน ซ้าย (มาก่อน) จะได้เปรียบเทียบได้ไม่มีปัญหา
|
 |
 |
 |
 |
Date :
2020-01-30 21:44:35 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เรื่อง วันนึงจองได้หลายวันน่าคิดครับ
เอาไปต่อยอด ดู
เรื่องอื่นเฉยๆ ไม่มีไร
Code (SQL)
create table bookCarPark (
id int identity(1,1) ,
idbook int,
idperson int,
checkIn date,
CheckOut Date
)
-- truncate table bookCarPark
insert into bookCarPark values (2,3,'2020-01-12','2020-01-15'),(2,3,'2020-01-18','2020-01-19')
select * from bookCarPark
declare @a date = '2020-01-16', @b date ='2020-01-17'
select 'can book between '+ cast(@a as varchar(10)) + ' and ' + cast(@b as varchar(10))
where not exists ( select 1 from bookCarPark a where
(@a BETWEEN a.checkin AND a.checkout)
OR (@b BETWEEN a.checkin AND a.checkout)
OR (a.checkin BETWEEN @a AND @b)
OR (a.checkout BETWEEN @a AND @b)
)
|
 |
 |
 |
 |
Date :
2020-01-31 14:43:42 |
By :
WWWWIN |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมลองทำได้แล้วนะครับ โดยใช้ NOT IN และ BETWEEN แบบที่คุณ Genesis™ แนะนำมา
อันนี้ผมทำแบบ ระบค่ามาจาก input แล้วอยากจะแชร์ให้เพื่อนๆ พี่ๆ น้องๆ ที่กำลังทำโปรเจคอะไรสักอย่างแนวนี้และนำไปประยุกต์
Code (PHP)
SELECT * FROM parking WHERE idChannel NOT IN
(SELECT idChannel FROM booking WHERE
(Checkin BETWEEN '".$_POST["checkin"]."' AND '".$_POST["checkout"]."') OR
(Checkout BETWEEN '".$_POST["checkin"]."' AND '".$_POST["checkout"]."'))";
// $_POST รับค่า date แบบ y/m/d
หากผิดถูกยังไง แย้งและแนะนำเพิ่มเติมได้เลยครับ
ขอบคุณทุกคนมากครับ
แก้ไขครั้งที่ 4 ตามคอมเมนต์ 12 และทำตามตัวอย่างคอมเมนต์ 10
|
ประวัติการแก้ไข 2020-02-01 19:39:19 2020-02-01 19:43:21 2020-02-01 19:59:30 2020-02-02 13:15:00 2020-02-02 13:16:38
 |
 |
 |
 |
Date :
2020-02-01 19:33:33 |
By :
jameslufz |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แล้ว ถ้าเขา จอง คาบเกี่ยว 2 เดือนล่ะครับ 30 31 1 2
แนะนำให้ใช้ type date ในการ คิวรี่ครับ อย่าใช้แค่ วัน หรือ เดือน มันเพี้ยนได้ง่าย
ตัวอย่างความเห็น 10 ครับ ใช้ได้เลย
|
ประวัติการแก้ไข 2020-02-01 20:57:14
 |
 |
 |
 |
Date :
2020-02-01 20:55:46 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|