Ben aşağıdaki sütunları ile MySQL tablo var: id (int), tarih (zaman damgası), starttime (varchar), endtime (varchar), ...
Ben iki ya da daha fazla satır tarafından işgal edilmiştir zaman yuva bulmak gerekir. İşte bir örnek tablo
id| date |starttime|endtime |
__|_____________________|_________|________|
1 | 2010-02-16 17:37:36 |14:35:00 |17:37:00|
2 | 2010-02-17 12:24:22 |12:13:00 |14:32:00|
3 | 2010-02-16 12:24:22 |15:00:00 |18:00:00|
Satır 1 ve 3 çarpışır, ve kullanıcı tarafından düzeltilmesi gerekir. Böyle çarpışan satırları tanımlamak için bir sorgu gerekir - Bana çarpışmada tüm satır kimliğini verecek bir şey.
Veritabanındaki verileri takarken ben bu sorgu ile çarpışmaları bulabilirsiniz:
SELECT ID FROM LEDGER
WHERE
DATE(DATE) = DATE('$timestamp')
AND (
STR_TO_DATE('$starttime','%H:%i:%s') BETWEEN
STR_TO_DATE(STARTTIME,'%H:%i:%s') AND STR_TO_DATE(ENDTIME,'%H:%i:%s') OR
STR_TO_DATE('$endtime','%H:%i:%s') BETWEEN
STR_TO_DATE(STARTTIME,'%H:%i:%s') AND STR_TO_DATE(ENDTIME,'%H:%i:%s')
) AND
FNAME = '$fname'";
Kesinlikle MySQL kullanarak ya da ben çarpışmalar bulmak için PHP kullanmak zorunda Bunu gerçekleştirmek için herhangi bir yolu var mı?
Edit: Quassnoi en sollution bana ihtiyacı olan tam sorgu oluşturmak yardımcı oldu. Bu öyle:
SELECT l1.id as id1, l2.id as id2, l1.lname as name1, l2.lname as name2,
l1.date as date1, l2.date as name2, l1.starttime as starttime1,
l2.starttime as starttime2, l1.endtime as endtime1, l2.endtime as endtime2
FROM ledger l1
JOIN ledger l2
ON l2.starttime <= l1.endtime
AND l2.endtime >= l1.starttime
AND l2.lname = l1.lname
AND l2.id != l1.id
AND DATE(l2.date)=DATE(l1.date)