รบกวนสอบถาม SQL การเลือกค่าเวลาสูงสุดออกมาอีกครั้ง นึกว่าจะได้แหร่ะแต่ยังไม่ได้เลยครับ
ลองเอา GROUP BY product_bind_id
ออกอ่ะคับ
Date :
2010-09-17 11:47:45
By :
xcom
จุดประสงค์ของผมคือ เลือกเอาวันสูงสุดของ product_bind_id โดยที่ status_id ก็ตรงตามวันที่ ที่ได้ด้วย ครับ
แต่มันได้วันที่สูงสุดของ product_bind_id มาได้ แต่ status_id มันไม่ตรง
Date :
2010-09-17 11:54:26
By :
ความรู้เท่าหางอึ่ง
ยังไม่ได้เลยครับพี่
Date :
2010-09-17 12:56:51
By :
ความรู้เท่าหางอึ่ง
ไม่แน่ใจนักนะครับ แต่ผมเข้าใจอย่างนี้
SELECT MAX(check_date), check_id, product_bind_id, status_id FROM tbl_check GROUP BY product_bind_id
ฟิลด์ check_date มีฟังก์ชัน max เป็นตัวรวม ส่วนฟิลด์ product_bind_id ก็ให้แยกเป็นกลุ่มด้วย คำสั่ง group by แล้ว
แต่ check_id, status_id ไม่มีฟังก์ชันรวม(aggreate functio)ที่สั่งไว้ มันเลยไม่รู้ว่าจะให้เอาค่าไหนมา เอาค่ามากสุด น้อยสุด หรือค่ารวม หรือค่าเฉลี่ย ฯลฯ
เมื่อไม่ได้แจ้งสั่งไว้ มันคงเอาค่าแรกที่เจอมาแสดง
ทางแก้
ผมจะทำเป็นสองตอนคือ ตอนแรก หาค่า MAX(check_date) ก่อน
SELECT MAX(check_date),product_bind_id FROM tbl_check GROUP BY product_bind_id
เก็บค่า MAX(check_date) ไว้ในตัวแปร สมมติเป็น $max_date แล้ว หาค่าที่เหลือ (หากมีหลายค่า ก็เก็บมาทำทีละค่าใช้วนลูป)
SELECT check_date, check_id, product_bind_id, status_id FROM tbl_check WHERE check_date = '$max_date'
เคยอ่านบางตำราใช้ select ซ้อน select แต่ผมไม่เข้าใจเลยไม่ได้ใช้ มันจะเป็นทำนอง
SELECT check_date, check_id, product_bind_id, status_id ,product_bind_id FROM tbl_check WHERE check_date =
SELECT MAX(check_date) FROM tbl_check GROUP BY product_bind_id
อันนี้ไม่แน่ใจนะครับ กลัวจำมาผิดๆ
Date :
2010-09-17 13:11:04
By :
สกล
ขอบคุณ คุณสกล มากครับ เดี๋ยวนำไปลองดูครับ
พอดีไปเจอใน stackoverflow.com เลยเอามาปรับ น่าจะได้ อีกสักครั้ง ครับ
SELECT tbl_check.check_date, tbl_check.product_bind_id, tbl_check.status_id
FROM tbl_check INNER JOIN tbl_product_bind ON (tbl_check .product_bind_id = tbl_product_bind.product_bind_id)
WHERE (tbl_check.product_bind_id, check_date) IN
( SELECT product_bind_id, MAX(check_date) FROM tbl_check GROUP BY product_bind_id)
Date :
2010-09-17 14:03:11
By :
ความรู้เท่าหางอึ่ง
Load balance : Server 02