 |
|
ช่วยเรื่องโค๊ต SQL ทีครับ ตันวิธีเขียน ระบบจองรถ ให้แสดงผลออกมาครับ |
|
 |
|
|
 |
 |
|
สวัสดีครับ พอดีติดปัญหาตรง Query ข้อมูลน่ะครับ
โดยมีข้อมูลรถจาก View_car
กับ TB ที่เป็นตัวเก็บข้อมูลการจองน่ะครับ
ปัญหาคือเวลาจะเรียกดูว่ารถคันไหนว่างให้โชว์ออกมา คันไหนไม่ว่างให้แสดงชื่อผู้จองน่ะครับ
พอเขียนไปสักแปปรถคันที่ไม่มีคนจองขึ้นครับแต่ คันที่เคยมีการจองไม่ขึ้นครับ
อันนี้เป็นโค๊ตที่เขียนแล้วมีการจองอยุ่จึงขึ้นชื่อผู้จอง
Code (SQL)
SELECT [CarLicense] as 'code', [CarType] as 'name',[fa_desc] as 'des' ,
[Rate],rc.[Resource] as 'employee',rc.[DayStartRent] as 'start' , rc.[DayEndRent] as 'end'
FROM [dbo].[VW_RentCar] tc
LEFT JOIN [dbo].[TB_CarCentralRequest] rc on rc.[Car] = tc.CarLicense
WHERE ([CarLicense] like '%%' OR [CarType] like '%%')
and (
((rc.DayStartRent = '2016-07-18' or (rc.DayStartRent < '2016-07-18' and '2016-07-18' = rc.DayEndRent))
and (rc.DayEndRent = '2016-07-19' or rc.DayEndRent >= rc.DayStartRent))
or (rc.DayStartRent is null and rc.DayEndRent is null))
ผลการQueryออกมา

อันนี้เป็นโค๊ตที่จองในวันที่ไม่มีการจองครับ (มีต้องมี ชง944 ด้วยเพราะไม่มีการจองในวันนี้)
Code (SQL)
SELECT [CarLicense] as 'code', [CarType] as 'name',[fa_desc] as 'des' ,
[Rate],rc.[Resource] as 'employee',rc.[DayStartRent] as 'start' , rc.[DayEndRent] as 'end'
FROM [dbo].[VW_RentCar] tc
LEFT JOIN [dbo].[TB_CarCentralRequest] rc on rc.[Car] = tc.CarLicense
WHERE ([CarLicense] like '%%' OR [CarType] like '%%')
and (
((rc.DayStartRent = '2016-07-15' or (rc.DayStartRent < '2016-07-15' and '2016-07-15' = rc.DayEndRent))
and (rc.DayEndRent = '2016-07-15' or rc.DayEndRent >= rc.DayStartRent))
or (rc.DayStartRent is null and rc.DayEndRent is null))

พอดีตันคิดไม่ออกครับพอมีเสนอวิธีไหมครับ? พอดีมือใหม่เลยเขียนแบบตันๆ
Tag : .NET, Ms SQL Server 2012, Web (ASP.NET), C#
|
ประวัติการแก้ไข 2016-07-15 11:22:33 2016-07-15 11:28:42
|
 |
 |
 |
 |
Date :
2016-07-15 11:21:25 |
By :
kokoit555 |
View :
1249 |
Reply :
6 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
SQL ตัวที่ 2 หากผิดพลาดประการใด ต้องขออภัยในที่นี้ด้วยครับ
Code (SQL)
SELECT [CarLicense] as 'code', [CarType] as 'name',[fa_desc] as 'des' ,
[Rate],rc.[Resource] as 'employee',rc.[DayStartRent] as 'start' , rc.[DayEndRent] as 'end'
FROM [dbo].[VW_RentCar] tc
LEFT JOIN [dbo].[TB_CarCentralRequest] rc on rc.[Car] = tc.CarLicense
WHERE ([CarLicense] like '%%' OR [CarType] like '%%')
and (rc.DayStartRent is null or rc.[DayStartRent] <> '2016-07-15') and (rc.[DayEndRent] is null or rc.[DayEndRent] <> '2016-07-15')
and [CarLicense] not in (select [CarLicense] FROM [dbo].[VW_RentCar] tc
LEFT JOIN [dbo].[TB_CarCentralRequest] sc on sc.[Car] = tc.CarLicense where (sc.[DayStartRent] < '2016-07-15' AND sc.[DayEndRent] > '2016-07-15'))
|
ประวัติการแก้ไข 2016-07-15 15:10:08 2016-07-16 09:35:39 2016-07-16 10:21:54
 |
 |
 |
 |
Date :
2016-07-15 15:06:29 |
By :
taotechnocom |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

อันนี้ที่มันออกมาน่ะครับ ต้องการถ้าไม่มีในเวลาจองนี้ รถคัน 944 ต้องโชว์อันเดียว
เวลาเรียกไปใน Web app ถ้าในวันที่เขาจองไปชนกับวันที่มีการจองจะแสดงชื่อคนที่จองพร้อมเวลาด้วย
ถ้าไม่มีคือจะไม่มีการแสดงน่ะครับ
|
 |
 |
 |
 |
Date :
2016-07-22 11:42:56 |
By :
kokoit555 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เอาแบบไม่ต้องพื้นฐาน SQL ก็นี่เลย
เพิ่ม คอลัม status ให้มันไปเลย พอดีนึกถึงลานจอดรถใน เซนทรัล พอดี 5555
รถคันไหนว่างให้โชว์ Off
รถคันไหนไม่ว่างให้โชว์ On
มองๆดูแล้ว database ก็แปลกดีนะครับ
ลองออกแบบให้เป็นสัดส่วนกว่านี้ดีไม๊ครับ
เผื่อต่อไปได้ทำงานที่ใหญ่กว่าจะได้ออกแบบได้คล่องตัวมากขึ้น
หวังดีเพื่ออนาคต ครับ
|
 |
 |
 |
 |
Date :
2016-07-22 14:07:26 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จัดไปครับ
|
 |
 |
 |
 |
Date :
2016-07-25 08:32:05 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|