 |
ขอความช่วยเหลือผู้รู้ ผู้เก่ง คำสั่ง sql ด้วยนะคะ คือต้องการหา toolID ทีไม่ซ้้ำกันในการจองอุปกรณ์ต่อวัน โดยเอา toolID จองล่าของทุกๆๆ toolID ค่ะ |
|
 |
|
|
 |
 |
|
Code (SQL)
SELECT DISTINCT A.toolID, toolName, ttypeID, roomID, hoursUsed, diffTime
FROM (
SELECT request.timeStart, request.timeEnd, HOUR( '18:00:00' ) - HOUR( timeEnd ) AS diffTime, toolID, dateUse
FROM requestdesc
LEFT JOIN request ON requestdesc.reqID = request.reqID
) AS A
LEFT JOIN tool ON A.toolID = tool.toolID
WHERE ttypeID = '01'
AND A.toolID !=0007
AND roomID = '0001'
AND A.dateUse = '2012-10-31'
AND A.timeEnd < '18:00:00'
AND (
(
'18:00:00' NOT
BETWEEN A.timeStart
AND A.timeEnd
)
AND (
'19:50:00' NOT
BETWEEN A.timeStart
AND A.timeEnd
)
)
ORDER BY diffTime DESC , hoursUsed ASC
คือ ค้นหา toolID ที่มีการจองอุปกรณ์ เอาตัวล่าสุดของวันนั้นๆคะ แต่พอเขียนอุปกร์ตัวไหนวันนึงจองหลายครั้งมันมาหมดเลย TT
แล้ว diffTime อยากได้จะเป็น diffTime ของการจองอุปกรณ์ ตัว toolID ล่าสุดของวันนั้นๆๆค่ะ
หนูอยากได้ชุดข้อมูล toolID ที่ไม่ซ้ำกันค่ะ พยายามเขียนแล้วมันไม่ได้ค่ะ รบผู้รู้ พี่ๆๆใจดีทุกคนด้วยนะคะ ขอบคุณค่ะ

Tag : PHP, MySQL
|
|
 |
 |
 |
 |
Date :
2012-10-21 09:39:23 |
By :
chanajun |
View :
910 |
Reply :
3 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ทำได้เองแล้วววววว
ค่ะ :)))))
|
 |
 |
 |
 |
Date :
2012-10-21 14:26:09 |
By :
chanajun |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตกลงแก้ตรงไหนครับ
|
 |
 |
 |
 |
Date :
2012-10-22 08:17:03 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (SQL)
$strSQL = " SELECT DISTINCT A.toolID , toolName , ttypeID , roomID , hoursUsed , diffTime FROM (
SELECT DISTINCT toolID, request.timeStart, request.timeEnd, HOUR('$startTime') - HOUR(timeEnd) AS diffTime, dateUse
FROM requestdesc
LEFT JOIN request ON requestdesc.reqID = request.reqID
WHERE ttypeID = '".$arrayttypeId[$i]."'
AND timeEnd < '".$startTime."'
ORDER BY diffTime ASC
) AS A
LEFT JOIN tool ON A.toolID = tool.toolID
WHERE roomID = '0001'
AND A.dateUse ='".$this->request->dateUse."' AND diffTime > 0
AND (('".$startTime."' NOT BETWEEN A.timeStart AND A.timeEnd )
AND ('".$endTime."' NOT BETWEEN A.timeStart AND A.timeEnd ))
GROUP BY toolID ORDER BY diffTime DESC , hoursUsed ASC ";
แก้เป็นแบบนี้ค่ะ ขอบคุณนะคะ
|
 |
 |
 |
 |
Date :
2012-10-25 21:03:24 |
By :
chanajun |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|