@markonix: to nie jest "sztywne", tzn. ze sytuacja sie zmienia, wiec daty nie wchodza w gre
@pedro84: tak, pomijac - chodzi o wybranie wszystkich rekordow "odtad", "dotad", tych pomiedzy 1 : 1, tak jak napisalem w poscie
w sytuacji, takiej - dalej ma wybierac te z wartoscia "0", ale TYLKO do pierwszego wystapienia "1" (znowu):
id_u date ip logd
1 2010-11-05 12:17:34 127.0.0.1 1
1 2010-11-05 12:17:34 127.0.0.1 1
1 2010-11-05 12:17:34 127.0.0.1 1 /**** to pominac
1 2010-11-05 12:17:29 127.0.0.1 0 /*** ODTAD
1 2010-11-05 12:17:19 127.0.0.1 0
1 2010-11-05 12:17:18 127.0.0.1 0
1 2010-11-05 12:17:17 127.0.0.1 0
1 2010-11-05 12:17:16 127.0.0.1 0
1 2010-11-05 12:17:15 127.0.0.1 0
1 2010-11-05 12:17:14 127.0.0.1 0
1 2010-11-05 12:17:13 127.0.0.1 0
1 2010-11-05 12:17:13 127.0.0.1 0 **** DOTAD WYBRAC TE REKORDY */
1 2010-11-05 12:17:12 127.0.0.1 1
1 2010-11-05 12:17:34 127.0.0.1 1
1 2010-11-05 12:17:34 127.0.0.1 0
takie cos, mi wstawili na forum mysql:
$q = q('select i.id_u, i.`date`, i.ip, i.logd
from `'.PRFX.'logd` i
join (select min(`date`) minDate, max(`date`) maxDate
from `'.PRFX.'logd`
where logd = 1) m
on i.`date` > m.minDate
and i.`date` < m.maxDate;'); IF(n_r($q) > 0) $logd = f($q); var_export($logd);
jednak zawsze wyswietla sie tylko 1 rekord, moze ktos wie jak to poprawic?
After doing the query, as you've supplied (sorry for the very late reply, but I was focused on more important things):
BTW. I want to get that effect, I've done an image:
http://img255.imageshack.us/img255/8615/issue.gif$q = q('select i.id_u, i.`date`, i.ip, i.logd
from `'.PRFX.'logd` i
join (select min(`date`) minDate, max(`date`) maxDate
from `'.PRFX.'logd`
where logd = 1) m
on i.`date` > m.minDate
and i.`date` < m.maxDate;'); if(n_r($q) > 0) $logd = f($q); var_export($logd);
I get:
array (
'id_u' => '1',
'date' => '2010-11-05 11:54:14',
'ip' => '127.0.0.1',
'logd' => '0',
)
----
Maybe I'm doing something wrong? (badly updated the "table names" or something)?
----
HERE IS MY TABLE
CREATE TABLE `chcur_logd` (
`id_u` int(11) NOT NULL,
`date` datetime NOT NULL,
`ip` varchar(255) NOT NULL,
`logd` tinyint(1) NOT NULL,
KEY `id_u` (`id_u`,`date`)
) ENGINE=MyISAM DEFAULT CHARSET=latin2;
--
-- Dumping data for table `chcur_logd`
--
INSERT INTO `chcur_logd` (`id_u`, `date`, `ip`, `logd`) VALUES
(1, '2010-11-05 11:03:32', '127.0.0.1', 0),
(1, '2010-11-05 11:03:52', '127.0.0.1', 0),
(1, '2010-11-05 11:03:56', '127.0.0.1', 1),
(1, '2010-11-05 11:54:14', '127.0.0.1', 0),
(1, '2010-11-05 11:54:17', '127.0.0.1', 1),
(1, '2010-11-05 12:16:50', '127.0.0.1', 0),
(1, '2010-11-05 12:16:51', '127.0.0.1', 0),
(1, '2010-11-05 12:16:52', '127.0.0.1', 0),
(1, '2010-11-05 12:16:53', '127.0.0.1', 0),
(1, '2010-11-05 12:16:54', '127.0.0.1', 0),
(1, '2010-11-05 12:16:54', '127.0.0.1', 0),
(1, '2010-11-05 12:16:55', '127.0.0.1', 0),
(1, '2010-11-05 12:16:55', '127.0.0.1', 0),
(1, '2010-11-05 12:16:56', '127.0.0.1', 0),
(1, '2010-11-05 12:16:57', '127.0.0.1', 0),
(1, '2010-11-05 12:16:57', '127.0.0.1', 0),
(1, '2010-11-05 12:16:58', '127.0.0.1', 0),
(1, '2010-11-05 12:16:58', '127.0.0.1', 0),
(1, '2010-11-05 12:16:59', '127.0.0.1', 0),
(1, '2010-11-05 12:17:00', '127.0.0.1', 0),
(1, '2010-11-05 12:17:02', '127.0.0.1', 0),
(1, '2010-11-05 12:17:03', '127.0.0.1', 0),
(1, '2010-11-05 12:17:03', '127.0.0.1', 0),
(1, '2010-11-05 12:17:04', '127.0.0.1', 0),
(1, '2010-11-05 12:17:05', '127.0.0.1', 0),
(1, '2010-11-05 12:17:06', '127.0.0.1', 0),
(1, '2010-11-05 12:17:06', '127.0.0.1', 0),
(1, '2010-11-05 12:17:07', '127.0.0.1', 0),
(1, '2010-11-05 12:17:08', '127.0.0.1', 0),
(1, '2010-11-05 12:17:09', '127.0.0.1', 0),
(1, '2010-11-05 12:17:10', '127.0.0.1', 0),
(1, '2010-11-05 12:17:11', '127.0.0.1', 0),
(1, '2010-11-05 12:17:12', '127.0.0.1', 1),
(1, '2010-11-05 12:17:13', '127.0.0.1', 0),
(1, '2010-11-05 12:17:13', '127.0.0.1', 0),
(1, '2010-11-05 12:17:14', '127.0.0.1', 0),
(1, '2010-11-05 12:17:15', '127.0.0.1', 0),
(1, '2010-11-05 12:17:16', '127.0.0.1', 0),
(1, '2010-11-05 12:17:17', '127.0.0.1', 0),
(1, '2010-11-05 12:17:18', '127.0.0.1', 0),
(1, '2010-11-05 12:17:19', '127.0.0.1', 0),
(1, '2010-11-05 12:17:29', '127.0.0.1', 0),
(1, '2010-11-05 12:17:34', '127.0.0.1', 1),
(1, '2010-11-05 13:25:42', '127.0.0.1', 1),
(1, '2010-11-05 16:10:59', '127.0.0.1', 1),
(1, '2010-11-06 03:42:21', '127.0.0.1', 1),
(1, '2010-11-06 03:47:18', '127.0.0.1', 1),
(1, '2010-11-06 03:47:26', '127.0.0.1', 0),
(1, '2010-11-06 03:47:28', '127.0.0.1', 0),
(1, '2010-11-06 03:47:29', '127.0.0.1', 0),
(1, '2010-11-06 03:47:30', '127.0.0.1', 0),
(1, '2010-11-06 03:47:33', '127.0.0.1', 1),
(1, '2010-11-06 09:48:23', '127.0.0.1', 1),
(1, '2010-11-06 09:53:30', '127.0.0.1', 1),
(1, '2010-11-06 10:26:45', '127.0.0.1', 1),
(1, '2010-11-06 11:51:30', '127.0.0.1', 1),
(1, '2010-11-06 17:22:20', '127.0.0.1', 1),
(1, '2010-11-07 09:48:50', '127.0.0.1', 1),
(1, '2010-11-07 10:49:17', '127.0.0.1', 1),
(1, '2010-11-07 10:51:59', '127.0.0.1', 1);
dostalem odpowiedz na oficjalnym forum mysql; sprawa wyglada tak:
pytanie jest: jak to wrzucic w zapytanie mysql_query();
SET @row = 0;
SET @GROUP = -1;
SET @login = -1;
SET @lastFail = -1;
SELECT groupId
FROM (SELECT @row := case logd when @login then @row + 1 else 0 end rowId,
@login := logd logd,
@GROUP := case @row when 0 then @GROUP + 1 else @GROUP end groupId
FROM chcur_logd
ORDER BY `date` DESC) v
WHERE logd = 0
GROUP BY groupId
HAVING max(rowId) > 3
ORDER BY groupId
LIMIT 1
INTO @lastFail;
SET @row = 0;
SET @GROUP = -1;
SET @login = -1;
SELECT id_u, `date`, ip, logd
FROM (SELECT @row := case logd when @login then @row + 1 else 0 end rowId,
@login := logd logd,
@GROUP := case @row when 0 then @GROUP + 1 else @GROUP end groupId,
id_u, `date`, ip
FROM chcur_logd
ORDER BY `date` DESC) v
WHERE groupId = @lastFail;