2012-10-15 10 views
5

Tôi có nhiệm vụ trên tay xây dựng một hệ thống chấm công mà tôi đang làm tất cả các quyền nhưng tôi bị mắc kẹt ở một nơi. Khi đếm lá, nếu một người nghỉ phép vào thứ Sáu và sau đó rời đi một lần nữa vào thứ Hai, sau đó vào giữa thứ Bảy và Chủ Nhật nên được tính là lá.Chỉ Chọn Thứ Sáu và Thứ Hai tới trong mysql

tôi đã có thể để trích xuất chỉ có ngày thứ Sáu và thứ Hai từ bàn của tôi bằng cách làm theo truy vấn:

SELECT * FROM `main` WHERE (DAYOFWEEK(DATE) =2 OR DAYOFWEEK(DATE) =6) 
AND emp_no =4 AND STATUS ='leave' ORDER BY DATE ASC 

nhưng tôi không biết làm thế nào để chọn thứ Sáu và thứ Hai tới chỉ vì vậy tôi biết rằng người đó đang nghỉ vào thứ Sáu cũng như thứ Hai.

Mọi trợ giúp sẽ được đánh giá cao.

+1

bạn có thể xin vui lòng gửi dữ liệu giả của bạn để chúng tôi có thể kiểm tra? –

+0

Bảng của tôi có các trường sau: ngày, số nhân viên và tình trạng nhân viên. –

Trả lời

5

này sẽ cung cấp cho bạn tất cả "lá" mà trải rộng trên một thứ Sáu và thứ Hai sau:

SELECT * 
FROM main fri JOIN main mon 
    ON fri.DAYOFWEEK(DATE)=6 
    AND mon.DATE = fri.DATE + INTERVAL 3 DAY 
    AND fri.emp_no = mon.emp_no 
WHERE fri.STATUS='leave' AND mon.STATUS='leave' 
+0

nhưng nó chỉ cung cấp cho các hồ sơ đó là thứ Sáu. –

+1

@ JewelThief: Nó không nên làm ... tuy nhiên các tên cột va chạm, vì vậy khách hàng của bạn có thể không truy cập được vào các cột thứ hai. Bạn có thể bí danh họ, ví dụ: với 'SELECT fri.emp_no, fri.DATE AS thứ sáu, mon.DATE AS thứ hai FROM ...' – eggyal

+0

Cảm ơn @eggyal. Bạn thực sự giải quyết được vấn đề của tôi. Bạn truy vấn là chính xác. Tôi đã làm một sai lầm trong việc chạy nó. –