Ben gerçekten belirgin bir şey eksik ise emin değilim, ama bu sorgu bir sözdizimi hatası alıyorum. Ben belirgin bir şey eksik olsa bile, ben sonra kulüpler ne almanın akıllı bir yolu olup olmadığını bilmek istiyorum.
Temelde, sorgu Pazartesi ve Cuma günleri arasında bir start_date ile bir kullanıcıya bağlı herhangi bir satır sorar. Bu harika çalışıyor. Ama sonra Cumartesi ya da Pazar için herhangi bir satır vardır durumda koşullu sorgu ekledi. Koşullu sorgu Cumartesi veya Pazar, ana sorguda değil kullanıcı ile HERHANGİ kullanıcılar için kontrol unutmayın:
SELECT user_id,
DATE_FORMAT(DATE(shift_start),'%m/%d/%Y') date,
TIME_FORMAT(TIME(shift_start), '%h:%i %p') start,
TIME_FORMAT(TIME(shift_end), '%h:%i %p') end,
title
FROM shifts
WHERE user_id = '$user_id'
AND DATE(shift_start) BETWEEN
DATE_SUB(DATE(NOW()), INTERVAL WEEKDAY(NOW()) DAY) AND
DATE_ADD(DATE(NOW()), INTERVAL
(SELECT
IF(
COUNT(*) FROM shifts
WHERE DATE(shift_start) BETWEEN
DATE_ADD(DATE(NOW()), INTERVAL 5 - WEEKDAY(NOW()) DAY) AND
DATE_ADD(DATE(NOW()), INTERVAL 6 - WEEKDAY(NOW()) DAY),
6, 4)) - WEEKDAY(NOW()) DAY)
ORDER BY shift_start
Ben aslında IF parçası ile haberci önce nasıl çalıştığını oldukça gurur duyuyorum, ama bunu yapmanın bir besbelli daha iyi bir yolu olup olmadığını yine, ben bütün kulaklar değilim.
Bu ütülenir aldığında Oh, ve "Now ()" (GET yoluyla kendisine iletilen) php script kurmak bir tarih değişkeni ile değiştirilecektir.
Teşekkürler!
Harika iş, benlumey. İşte çalıştı budur:
SELECT user_id,
DATE_FORMAT(DATE(shift_start),'%m/%d/%Y') date,
TIME_FORMAT(TIME(shift_start), '%h:%i %p') start,
TIME_FORMAT(TIME(shift_end), '%h:%i %p') end,
title
FROM shifts
WHERE user_id = '$user_id'
AND DATE(shift_start) BETWEEN
DATE_SUB(DATE(NOW()), INTERVAL WEEKDAY(NOW()) DAY) AND
DATE_ADD(DATE(NOW()), INTERVAL
(SELECT
IF(COUNT(*),6,4)
FROM shifts
WHERE DATE(shift_start) BETWEEN
DATE_ADD(DATE(NOW()), INTERVAL 5 - WEEKDAY(NOW()) DAY) AND
DATE_ADD(DATE(NOW()), INTERVAL 6 - WEEKDAY(NOW()) DAY))
- WEEKDAY(NOW()) DAY)
ORDER BY shift_start