2013-06-04 64 views
0

如何将所有这些语句合并为一个,并根据需要在脚本中调整日期?结合mySQL语句

$sunday = mysql_query("SELECT h.timestart, h.timeend, h.work, h.why_off, h.work_type, e.show FROM hours AS h, employees AS e 
          WHERE h.s_id = '" .$s_id. "' AND e.u_id = h.u_id AND WEEK(h.date) = WEEK(DATE_ADD(CURRENT_DATE, INTERVAL +7 DAY)) AND DAYOFWEEK(h.date) = 1 
           ORDER BY e.emp_id ASC"); 
$monday = mysql_query("SELECT h.timestart, h.timeend, h.work, h.why_off, h.work_type, e.show FROM hours AS h, employees AS e 
          WHERE h.s_id = '" .$s_id. "' AND e.u_id = h.u_id AND WEEK(h.date) = WEEK(DATE_ADD(CURRENT_DATE, INTERVAL +7 DAY)) AND DAYOFWEEK(h.date) = 2 
           ORDER BY e.emp_id ASC"); 
$tuesday = mysql_query("SELECT h.timestart, h.timeend, h.work, h.why_off, h.work_type, e.show FROM hours AS h, employees AS e 
          WHERE h.s_id = '" .$s_id. "' AND e.u_id = h.u_id AND WEEK(h.date) = WEEK(DATE_ADD(CURRENT_DATE, INTERVAL +7 DAY)) AND DAYOFWEEK(h.date) = 3 
           ORDER BY e.emp_id ASC"); 
$wednesday = mysql_query("SELECT h.timestart, h.timeend, h.work, h.why_off, h.work_type, e.show FROM hours AS h, employees AS e 
          WHERE h.s_id = '" .$s_id. "' AND e.u_id = h.u_id AND WEEK(h.date) = WEEK(CURRENT_DATE) AND DAYOFWEEK(h.date) = 4 
           ORDER BY e.emp_id ASC"); 
$thursday = mysql_query("SELECT h.timestart, h.timeend, h.work, h.why_off, h.work_type, e.show FROM hours AS h, employees AS e 
          WHERE h.s_id = '" .$s_id. "' AND e.u_id = h.u_id AND WEEK(h.date) = WEEK(CURRENT_DATE) AND DAYOFWEEK(h.date) = 5 
           ORDER BY e.emp_id ASC"); 
$friday = mysql_query("SELECT h.timestart, h.timeend, h.work, h.why_off, h.work_type, e.show FROM hours AS h, employees AS e 
          WHERE h.s_id = '" .$s_id. "' AND e.u_id = h.u_id AND WEEK(h.date) = WEEK(CURRENT_DATE) AND DAYOFWEEK(h.date) = 6 
           ORDER BY e.emp_id ASC"); 
$saturday = mysql_query("SELECT h.timestart, h.timeend, h.work, h.why_off, h.work_type, e.show FROM hours AS h, employees AS e 
          WHERE h.s_id = '" .$s_id. "' AND e.u_id = h.u_id AND WEEK(h.date) = WEEK(CURRENT_DATE) AND DAYOFWEEK(h.date) = 7 
           ORDER BY e.emp_id ASC"); 

一天的脚本看起来像这样我会需要它。

<div class="hours"> 
    <?php $starting = date("g:ia", strtotime($time['timestart'])); 
     $ending = date("g:ia", strtotime($time['timeend'])); 
      if ($time['work'] == '1') { 
       if ($time['why_off'] == '1') 
        {echo "<div class='off'>OFF [R]</div>";} 
       elseif ($time['why_off'] == '2') 
        {echo "<div class='off'>OFF [ML]</div>";} 
       elseif ($time['why_off'] == '0') 
        {echo "<div class='off'>OFF</div>";} 
      } 
       elseif ($time['work'] == '0') { 
        if ($time['work_type'] == '1') { 
         if ($time['timeend'] == '23:00:00') 
         {echo "<div class='working_w'>".$starting." - Close<br>[TL]</div>";} 
          else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[TL]</div>";} 
        } 
        elseif ($time['work_type'] == '2') { 
         if ($time['timeend'] == '23:00:00') 
         {echo "<div class='working_w'>".$starting." - Close<br>[SF]</div>";} 
          else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[SF]</div>";} 
        } 
        elseif ($time['work_type'] == '3') { 
         if ($time['timeend'] == '23:00:00') 
         {echo "<div class='working_w'>".$starting." - Close<br>[-/+]</div>";} 
          else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[-/+]</div>";} 
        } 
        elseif ($time['work_type'] == '4') { 
         if ($time['timeend'] == '23:00:00') 
         {echo "<div class='working_w'>".$starting." - Close<br>[TR]</div>";} 
          else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[TR]</div>";} 
        } 
        elseif ($time['work_type'] == '0') { 
         if ($time['timeend'] == '23:00:00') 
         {echo "<div class='working'>".$starting." - Close</div>";} 
          else {echo "<div class='working'>".$starting." - ".$ending."</div>";} 
        } 
       }?> 

</div> 
<?php } ?> 

我想拥有这一切为一体,使我能够调用先前的和/或下一个链接显示其他周在数据库中。提前

谢谢:)

+0

看起来像你需要一大堆的“OR”的为where条件 – 2013-06-04 02:36:10

+0

@Dagon不是‘一大堆’。就像我想的那样,1或2就足够了。 – BlitZ

回答

1

未测试

SELECT h.timestart, 
     h.timeend, 
     h.work, 
     h.why_off, 
     h.work_type, 
     e.show 
FROM 
     hours AS h INNER JOIN employees AS e ON e.u_id = h.u_id 
WHERE h.s_id = '{$s_id}' 
     AND WEEK(h.date) = WEEK(DATE_ADD(CURRENT_DATE, 
     INTERVAL + (CASE 
      WHEN DAYOFWEEK(h.date) BETWEEN 1 AND 3 THEN 7 
      ELSE 0 END 
    ) DAY)) 
ORDER BY e.emp_id ASC