Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] wyciagniecie tylko unikalnego rekordu
Forum PHP.pl > Forum > PHP
AndyPSV
Mam baze i chce wyciagnac tylko 1 (jeden) rekord co ma ACTION = 1 oraz ID_TO = X


  1. CREATE TABLE `drug_db_log_pl` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `id_to` int(11) NOT NULL,
  4. `by_who` int(11) NOT NULL,
  5. `date` datetime NOT NULL,
  6. `action` tinyint(4) NOT NULL,
  7. `text` text NOT NULL,
  8. PRIMARY KEY (`id`)
  9. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=5 ;
  10.  
  11. --
  12. -- Dumping data for table `drug_db_log_pl`
  13. --
  14.  
  15. INSERT INTO `drug_db_log_pl` (`id`, `id_to`, `by_who`, `date`, `action`, `text`) VALUES
  16. (1, 1, 1, '2010-09-14 15:44:41', 1, ''),
  17. (2, 1, 1, '2010-09-14 15:44:45', 1, ''),
  18. (3, 1, 1, '2010-09-14 15:44:50', 1, ''),
  19. (4, 2, 1, '2010-09-14 15:45:24', 1, '');
  20.  


czyli w tym przypadku chce wyciagnac tylko rekord: 1 i 4.
jak to zrobic za pomoca jednego zapytania?

mam cos takiego:
  1. $sql = ' WHERE by_who = '.$this->u['id'].' AND action = 1 ';
  2.  
  3. $qq = q('SELECT id FROM `'.PRFX.'db_log'.LG.'`'.$sql); $cnt = n_r($qq); $this->tpl->assign('cnt',$cnt); loadLib('number2word');
  4. $q = q('SELECT * FROM `'.PRFX.'db_log'.LG.'`'.$sql.' ORDER BY id DESC LIMIT '.($pg*PER_PG3).','.PER_PG3.''); if(n_r($q) > 0) ....
phpion
Cytat(AndyPSV @ 14.09.2010, 15:38:34 ) *
Mam baze i chce wyciagnac tylko 1 (jeden) rekord co ma ACTION = 1 oraz ID_TO = X

...

czyli w tym przypadku chce wyciagnac tylko rekord: 1 i 4.

To w końcu 1 czy kilka?

  1. SELECT * FROM tabela WHERE action=1 AND id_to=X LIMIT 1;
AndyPSV
chce wyciagnac rekordy, ktore maja po 1 powtorzeniu - mowiac inaczej
na zalaczonym przykladzie maja to byc rekordy z ID: 1 i 4

  1. $qq = q('SELECT DISTINCT id_to FROM `'.PRFX.'db_log'.LG.'`'.$sql); $cnt = n_r($qq); $this->tpl->assign('cnt',$cnt); loadLib('number2word');
  2. $q = q('SELECT DISTINCT id_to FROM `'.PRFX.'db_log'.LG.'`'.$sql.' ORDER BY id DESC LIMIT '.($pg*PER_PRINT_PG1).','.PER_PRINT_PG1.''); if(n_r($q) > 0) while($_r = f($q)) {
goran
  1. SELECT * FROM drug_db_log_pl GROUP BY id_to, action


ew. jeżeli źle zrozumiałem to tak:

  1. SELECT * FROM drug_db_log_pl WHERE action = 1 GROUP BY id_to
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.