Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql] jak wybrac rekordy "z pomiedzy"
AndyPSV
post
Post #1





Grupa: Zarejestrowani
Postów: 393
Pomógł: 5
Dołączył: 6.02.2003
Skąd: The.Luciferian.Doctrine.p
df

Ostrzeżenie: (30%)
XX---


Jak wybrac te rekordy "spomiedzy" logd: 1 do 1?

  1. id_u date ip logd
  2. 1 2010-11-05 12:17:34 127.0.0.1 1 /**** to pominac
  3. 1 2010-11-05 12:17:29 127.0.0.1 0 /*** OD TAD
  4. 1 2010-11-05 12:17:19 127.0.0.1 0
  5. 1 2010-11-05 12:17:18 127.0.0.1 0
  6. 1 2010-11-05 12:17:17 127.0.0.1 0
  7. 1 2010-11-05 12:17:16 127.0.0.1 0
  8. 1 2010-11-05 12:17:15 127.0.0.1 0
  9. 1 2010-11-05 12:17:14 127.0.0.1 0
  10. 1 2010-11-05 12:17:13 127.0.0.1 0
  11. 1 2010-11-05 12:17:13 127.0.0.1 0 **** DO TAD WYBRAC TE REKORDY */
  12. 1 2010-11-05 12:17:12 127.0.0.1 1
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
AndyPSV
post
Post #2





Grupa: Zarejestrowani
Postów: 393
Pomógł: 5
Dołączył: 6.02.2003
Skąd: The.Luciferian.Doctrine.p
df

Ostrzeżenie: (30%)
XX---


@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. 1 2010-11-05 12:17:34 127.0.0.1 1
  2. 1 2010-11-05 12:17:34 127.0.0.1 1
  3.  
  4. 1 2010-11-05 12:17:34 127.0.0.1 1 /**** to pominac
  5. 1 2010-11-05 12:17:29 127.0.0.1 0 /*** ODTAD
  6. 1 2010-11-05 12:17:19 127.0.0.1 0
  7. 1 2010-11-05 12:17:18 127.0.0.1 0
  8. 1 2010-11-05 12:17:17 127.0.0.1 0
  9. 1 2010-11-05 12:17:16 127.0.0.1 0
  10. 1 2010-11-05 12:17:15 127.0.0.1 0
  11. 1 2010-11-05 12:17:14 127.0.0.1 0
  12. 1 2010-11-05 12:17:13 127.0.0.1 0
  13. 1 2010-11-05 12:17:13 127.0.0.1 0 **** DOTAD WYBRAC TE REKORDY */
  14. 1 2010-11-05 12:17:12 127.0.0.1 1
  15.  
  16. 1 2010-11-05 12:17:34 127.0.0.1 1
  17. 1 2010-11-05 12:17:34 127.0.0.1 0


takie cos, mi wstawili na forum mysql:

  1. $q = q('select i.id_u, i.`date`, i.ip, i.logd
  2. from `'.PRFX.'logd` i
  3. join (select min(`date`) minDate, max(`date`) maxDate
  4. from `'.PRFX.'logd`
  5. where logd = 1) m
  6. on i.`date` > m.minDate
  7. 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();

  1. SET @row = 0;
  2. SET @GROUP = -1;
  3. SET @login = -1;
  4. SET @lastFail = -1;
  5.  
  6. SELECT groupId
  7. FROM (SELECT @row := case logd when @login then @row + 1 else 0 end rowId,
  8. @login := logd logd,
  9. @GROUP := case @row when 0 then @GROUP + 1 else @GROUP end groupId
  10. FROM chcur_logd
  11. ORDER BY `date` DESC) v
  12. WHERE logd = 0
  13. GROUP BY groupId
  14. HAVING max(rowId) > 3
  15. ORDER BY groupId
  16. LIMIT 1
  17. INTO @lastFail;
  18.  
  19. SET @row = 0;
  20. SET @GROUP = -1;
  21. SET @login = -1;
  22.  
  23. SELECT id_u, `date`, ip, logd
  24. FROM (SELECT @row := case logd when @login then @row + 1 else 0 end rowId,
  25. @login := logd logd,
  26. @GROUP := case @row when 0 then @GROUP + 1 else @GROUP end groupId,
  27. id_u, `date`, ip
  28. FROM chcur_logd
  29. ORDER BY `date` DESC) v
  30. WHERE groupId = @lastFail;


Ten post edytował AndyPSV 5.11.2010, 13:31:19
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 21:45