Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Sortowanie wyników MySQL bez powtarzania.
Giluś
post 20.04.2016, 14:12:58
Post #1





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

Ostrzeżenie: (0%)
-----


Hej,

Posiadam tabelę w MySQL o nazwie: `pliki` ze strukturą:
  1. `id`, `id_user`, `nazwa`, `data1`, `data_dod`, `format`, `id_pojemnik`


Zawartość wygląda przykładowo tak:

`22`, `38`, `Zdjęcie0623.jpg`, `2015-07-20`, `1440092700`, `0`, `0`
`23`, `39`, `Zdjęcie0625.jpg`, `2015-07-21`, `1440092702`, `0`, `0`
`24`, `38`, `Zdjęcie061123.jpg`, `2015-07-23`, `14400927003`, `0`, `0`

Kolumna `data_dod` - zapisuję czas dodania zdjęcia (zapisu do MySQL'a) w formacie time() i na tym się skupmy..


I teraz chciałbym zrobić coś takiego:
Przesortować tą bazę i wyświetlić od najnowszego dodania (najbliższego obecnej dacie) do najstarszego i dodatkowo jeśli się powtarza id_user to jedynie bierze pod uwagę tą najnowszą pozycję, a resztę pomija..

Mam taki kod:

  1. <?php
  2. $rows_user = mysql_query("SELECT `id_user`, MAX(data_dod) AS data_dod FROM `pliki` GROUP BY `id_user` ORDER BY `pliki`.`data_dod` DESC") or die('Błąd zapytania');
  3.  
  4. if(mysql_num_rows($rows_user) > 0) {
  5. $i = 1;
  6. while($rows_user_r = mysql_fetch_assoc($rows_user)) {
  7.  
  8. if($users['admin'] == 1) { // mod
  9. $i++;
  10. $kolor = (($i%2) == 1) ? 'class="even"' : '';
  11.  
  12. $rows_user_nick = mysql_fetch_assoc(mysql_query("SELECT * FROM `users` WHERE `id` = '".$rows_user_r['id_user']."'")) or die('Błąd zapytani 1');
  13. if($rows_user_nick['rejon2'] == $users['rejon2']) {
  14. echo ' <tr '.$kolor.'>
  15. <td>'.$rows_user_nick['login'].'</td>
  16. <td>'.date("Y-m-d H:i:s",$rows_user_r['data_dod']).'</td>
  17. <td><a href="/admin_user.php?act=galeria&uid='.$rows_user_r['id_user'].'">Galeria</a></td>
  18. </tr>';
  19. }
  20. }
  21. }
  22. }
  23. ?>


I problem polega na tym, że dziwnie sortuję, ponieważ wyniki nie są i tak posortowane..


  1. CREATE TABLE IF NOT EXISTS `pliki` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `id_user` int(11) NOT NULL,
  4. `nazwa` varchar(255) COLLATE utf8_polish_ci NOT NULL DEFAULT '',
  5. `data1` varchar(255) COLLATE utf8_polish_ci NOT NULL DEFAULT '',
  6. `data_dod` varchar(255) COLLATE utf8_polish_ci NOT NULL DEFAULT '',
  7. `format` varchar(255) COLLATE utf8_polish_ci NOT NULL DEFAULT '',
  8. `id_pojemnik` varchar(255) COLLATE utf8_polish_ci NOT NULL DEFAULT 'Nie skatalogowany.',
  9. PRIMARY KEY (`id`)
  10. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=5189 ;
  11.  
  12.  
  13. INSERT INTO `pliki` (`id`, `id_user`, `nazwa`, `data1`, `data_dod`, `format`, `id_pojemnik`) VALUES
  14. (22, 38, 'Zdjęcie0623.jpg', '2015-07-20', '1440092700', '', 'Nie skatalogowany.'),
  15. (20, 17, 'Diagnostyka akumulatora 2.png', '2015-06-24', '1439928342', '', 'Nie skatalogowany.'),
  16. (21, 38, 'Zdjęcie0620.jpg', '2015-07-20', '1440092700', '', 'Nie skatalogowany.'),
  17. (17, 14, 'pl-810.png', '2015-08-18', '1439928262', '', 'Nie skatalogowany.'),
  18. (18, 14, 'pl-340.png', '2015-08-18', '1439928294', '', 'Nie skatalogowany.'),
  19. (19, 17, 'Wymiana sezonowa.png', '2015-08-18', '1439928314', '', 'Nie skatalogowany.'),
  20. (16, 17, 'Diagnostyka akumulatora 2.png', '2015-08-18', '1439928106', '', 'Nie skatalogowany.'),
  21. (23, 38, 'Zdjęcie0622.jpg', '2015-07-20', '1440092700', '', 'Nie skatalogowany.'),
  22. (24, 38, 'Zdjęcie0629.jpg', '2015-07-20', '1440092700', '', 'Nie skatalogowany.'),
  23. (25, 38, 'Zdjęcie0621.jpg', '2015-07-20', '1440092700', '', 'Nie skatalogowany.');
  24.  



Może macie jakiś pomysł ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
kajzur
post 20.04.2016, 18:52:16
Post #2





Grupa: Zarejestrowani
Postów: 385
Pomógł: 26
Dołączył: 22.03.2008
Skąd: TM

Ostrzeżenie: (0%)
-----


Spróbuj podzapytaniem wyciągnąć wyniki z tego zapytania co masz i dopiero wtedy posortować.


--------------------
Zapraszam na mojego bloga. Dowiedz się jak uzyskać darmowy, zaufany certyfikat albo jak rozpoznawać głos ;)
Go to the top of the page
+Quote Post
mmmmmmm
post 21.04.2016, 08:07:11
Post #3





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


Jednym zapytaniem: http://sqlfiddle.com/#!2/29a4a9/1
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 19:48