Skocz do zawartości

[MySQL]Najnowsze zdjęcia użytkowników


koras

Rekomendowane odpowiedzi

Witam,

Chciałbym na mojej stronie zrobić funkcję aby na stronie głównej wyświetlały się najnowsze zdjęcia dodane przez użytkowników coś jak "Ostatnio dodane zdjęcia" na nk.pl

Mam 2 tabele

Photos:

id	int(11)
uid	int(11)
hash	varchar(40)
desc	varchar(255)
date	datetime

Users:

id	int(11)
username	varchar(255)
firstname	varchar(255)
lastname	varchar(255)
password	varchar(40)

Próbowałem zapytaniem:

SELECT DISTINCT(ph.`uid`) as uid, ph.id as pid,ph.`hash`, u.`username`, u.`firstname`, u.`lastname` FROM `photos` ph LEFT JOIN `users` u ON u.id=ph.uid GROUP by uid ORDER by ph.`date` DESC LIMIT 5

No i niby wyświetla użytkowników którzy dodali najnowsze zdjęcia w odpowiedniej kolejności, ale pobiera najstarsze zdjęcie użytkownika zamiast tego najnowszego. Co na to poradzić?

Odnośnik do komentarza
Udostępnij na innych stronach

username varchar(255) > tu trochę przesadziłeś :)

To co chcesz zrobić zalicza się do tych trudniejszych zapytań które ma pozór są łatwe. Tak na "sucho" Ci tego zapytania nie ułożę, ale możesz wkleić kod SQL tworzący tabelę i przykładowo wypełniający dane.

PS Takim podejściem tego nie zrealizujesz: SELECT DISTINCT(ph.`uid`) as uid

Druga sprawa jest taka, że sortowanie po dacie jak to robisz ORDER by ph.`date` DESC nie jest wydajne chyba, że kolumna ph.`date` jest indeksowana. Znacznie szybsze będzie użycie ORDER by ph.`id` DESC gdyż kolumna ID stanowi klucz główny tabeli przez co jest już indeksowana.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

dzięki za wskazówki :) ORDER by ph.`date` DESC zostało bo już kombinowałem na głupka, bo początkowo było właśnie ORDER by ph.`id`.

No ale problem dalej nie rozwiązany ;/

CREATE TABLE IF NOT EXISTS `photos` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `uid` int(11) NOT NULL,
 `hash` varchar(40) COLLATE utf8_polish_ci NOT NULL,
 `desc` varchar(255) COLLATE utf8_polish_ci NOT NULL,
 `date` datetime NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=12;


INSERT INTO `photos` (`id`, `uid`, `hash`, `desc`, `date`) VALUES
(6, 3, '9865186d53c1a060b8acbe2c3dd9b6a8', Opis', '2010-12-08 22:05:40'),
(3, 3, 'baaa4deb9a8655b836e6c5136d6e25cb', ':)', '2010-12-08 19:08:53'),
(4, 3, '8c0dec719a6d05d4827e2ef750345061', ':)', '2010-12-08 19:10:23'),
(5, 3, '91580fd61f24fe7968e2b28b267b3ca7', ':)', '2010-12-08 19:11:20'),
(7, 3, '9f3eae7f94bffa828e87ca7262cfd528', 'Ja', '2010-12-09 12:21:55'),
(8, 3, '63e90c69209e9516721732e245e2aa8a', 'Opisik', '2010-12-09 22:14:13'),
(9, 5, '7215a2a04034281e20f8d4ef89cd29b6', 'ja', '2010-12-20 20:18:51'),
(10, 7, 'df9ba747412f373df479122f572c38c9', '', '2010-12-24 00:01:42'),
(11, 5, '3da92c9fcbd4f747e3fa94d080c9e1a9', '', '2010-12-24 00:14:41');

CREATE TABLE IF NOT EXISTS `users` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `username` varchar(255) COLLATE utf8_polish_ci NOT NULL,
 `firstname` varchar(255) COLLATE utf8_polish_ci NOT NULL,
 `lastname` varchar(255) COLLATE utf8_polish_ci NOT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `username` (`username`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=8;

INSERT INTO `users` (`id`, `username`, `firstname`, `lastname`) VALUES
(3, 'Karol', 'Karol', 'Karolski'),
(4, 'krisek', '', ''),
(5, 'izia', 'Iza', 'Ziomkowska'),
(6, 'test1', '', ''),
(7, 'test2', 'Jan', 'Nowak');

Odnośnik do komentarza
Udostępnij na innych stronach

Witam,

Chciałbym na mojej stronie zrobić funkcję aby na stronie głównej wyświetlały się najnowsze zdjęcia dodane przez użytkowników coś jak "Ostatnio dodane zdjęcia" na nk.pl

W podobnej sytuacji mam takie zapytanie:

SELECT max(id) as id, max(zdjecie) as zdjecie, kategoria FROM zdjecia GROUP BY kategoria ORDER BY id DESC

Mam nadzieje, ze Ci w czyms pomoze.

MG

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności