2013-01-21 73 views
1

我是編程新手,所以可能有一個簡單的解決方案來解決我的問題。通過MySQL列中的重複項迭代

我所要完成的是找到重複的字段中的條目在MySQL列中的條目將是日期,例如01/20/13

我需要通過日期字段進行搜索,並確定有多少重複的條目有一個然後在找到了號碼,我需要創建一個循環,將日期改成爲當天的名稱的日期,然後添加一個..

因此,例如01/20/13後的數日是星期天,所以在我的數據庫示例中,下面有4個重複條目,因此輸出結果需要爲Sunday.1, Sunday.2, Sunday.3, Sunday.4

我在以下PHP程序中使用此功能,但我需要它在7天範圍示例01/20/13 - 01/26/13中搜索重複項,從週日開始到週六結束。我不想硬編碼一個星期值的日期值。這就是我的問題所在,我不知道從哪裏去,我被卡住了。我只能想到爲了獲得理想的結果而花費數週價值的硬編碼,但我知道有一種更簡單的方法。

我的PHP代碼:

<?php 

    require '../TimeCard/DB.php'; 

    $i = 1; 

    try{ 
    $stmt = $conn->prepare('SELECT `date` FROM `timeRecords` WHERE `employeeID`= 1 ORDER BY date '); 
    $stmt->execute(); 
    } catch(PDOException $e){ 
     echo'ERROR: ' . $e->getMessage(); 
    } 

    while($row = $stmt->fetch()) 
    { 
    if ($row['date'] == "01/20/13"){ 

     $date = date("l", strtotime($row['date'])); 
     $$date = "Hello today is " . $date . "." . $i . "<br>"; 
     echo $Sunday; 
     $i++; 
    } 
    } 

?> 

數據庫:

+----+------------+----------+--------+-------------------+-----------+------------+-----------+---------+ 
| id | employeeID | date  | timeIn | jobDescription | equipType | unitNumber | unitHours | timeOut | 
+----+------------+----------+--------+-------------------+-----------+------------+-----------+---------+ 
| 10 |   1 | 01/20/13 | 20:30 | Blah1    |   | 01E  |  NULL | NULL | 
| 2 |   1 | 01/20/13 | 1:00 | Test    |   | 02S  |  NULL | NULL | 
| 9 |   1 | 01/20/13 | 13:00 | Blah12   |   | 02E  |  NULL | NULL | 
| 8 |   1 | 01/20/13 | 6:00 | Blah    |   | 02D  |  NULL | NULL | 
| 1 |   1 | 01/21/13 | 09:12 | Worked in hubbard | Excavator | 01E  |  8375 | 09:14 | 
| 3 |   1 | 01/22/13 |  |     |   | NULL  |  NULL | NULL | 
| 4 |   1 | 01/23/13 |  |     |   | NULL  |  NULL | NULL | 
| 5 |   1 | 01/24/13 |  |     |   | NULL  |  NULL | NULL | 
| 6 |   1 | 01/25/13 |  |     |   | NULL  |  NULL | NULL | 
| 7 |   1 | 01/26/13 |  |     |   | NULL  |  NULL | NULL | 
+----+------------+----------+--------+-------------------+-----------+------------+-----------+---------+ 

回答

0

你的方法似乎是太複雜了。查找今天的日期和給予員工的計數。


SELECT date, COUNT(*) FROM timeRecords 
    WHERE employeeID = 1 AND date BETWEEN DATE_SUB(NOW(),INTERVAL 1 WEEK) AND NOW() 
    GROUP BY date 
    ORDER BY date DESC 
+0

它需要一整個星期不只是一天。 – Yamaha32088

+0

更新了我的答案。 –

+0

空集22警告 – Yamaha32088

0

試試這個:

select `date`,DATE_FORMAT(str_to_date(`date`,'%m/%d/%y'),'%W') as ddd from timeRecords where `employeeID` = 1 
and str_to_date('01/20/13','%m/%d/%y') between str_to_date('01/20/13','%m/%d/%y') and date_add(str_to_date('01/20/13','%m/%d/%y'),interval 1 week); 

替換所需日期的價值爲01/20/13'