Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Sortowanie wyników MySQL bez powtarzania.
Forum PHP.pl > Forum > Przedszkole
Giluś
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ł ?
kajzur
Spróbuj podzapytaniem wyciągnąć wyniki z tego zapytania co masz i dopiero wtedy posortować.
mmmmmmm
Jednym zapytaniem: http://sqlfiddle.com/#!2/29a4a9/1
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.