Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Pobieranie ostatnich 50 logów.
Forum PHP.pl > Forum > Przedszkole
ZaXaZ
wszystko było dobrze dopóki baza nie osiągnęła pięćdziesiąt logów :/ co mam teraz zrobić?

  1. SELECT `id`, `nick`, `log`, `when` FROM `logs` WHERE `x`='y' ORDER BY `id` ASC LIMIT 50;


`id` = id,
`nick` = nazwa osoby która pisała,
`log` = wpis tej osoby,
`when` = "datetime + NOW()",
`x` = kolumna według której ma pobierać resztę rekordów i kolumn.
pitu
Zmień ASC na DESC
ZaXaZ
Cytat(pitu @ 15.04.2014, 21:18:41 ) *
Zmień ASC na DESC


teraz pobiera akutalne, jednak musiało by być DESC (żeby od góry najstarszy wpis na dół najnowszy), ktoś ma może jakiś pomysł?
Pyton_000
php i array_reverse
mar1aczi
  1. SELECT * FROM
  2. (SELECT `id`, `nick`, `log`, `when` FROM `logs` WHERE `x`='y' ORDER BY `id` DESC LIMIT 50)
  3. ORDER BY id;

Ciekawy artykuł: http://www.mysqltutorial.org/select-nth-hi...sing-mysql.aspx

edycja: dodany link
ZaXaZ
Cytat(mar1aczi @ 15.04.2014, 21:33:59 ) *
  1. SELECT * FROM
  2. (SELECT `id`, `nick`, `log`, `when` FROM `logs` WHERE `x`='y' ORDER BY `id` DESC LIMIT 50)
  3. ORDER BY id;


Kod
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1248 Every derived table must have its own alias' in (...)logs.php:2
Stack trace:
#0 (...)logs.php(2): PDO->query('SELECT * FROM (...')
#1(...)index.php(53): include_once('/home/zaxaz/dom...')
#2 {main}
  thrown in (...)logs.php on line 2


jakiś pomysł?, ze względu szybkości wolał bym zostać przy samym SQL.
mar1aczi
Pisze w czym problem jak krowie na granicy.
Cytat(ZaXaZ @ 15.04.2014, 21:01:35 ) *
Kod
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1248 Every derived table must have its own alias' in (...)logs.php:2
Stack trace:
#0 (...)logs.php(2): PDO->query('SELECT * FROM (...')
#1(...)index.php(53): include_once('/home/zaxaz/dom...')
#2 {main}
  thrown in (...)logs.php on line 2

Czytanie komunikatów i rozumienie wyświetlanych błędów nie boli.
  1. SELECT * FROM
  2. (SELECT `id`, `nick`, `log`, `when` FROM `logs` WHERE `x`='y' ORDER BY `id` DESC LIMIT 50) AS t
  3. ORDER BY t.id;

Poza tym, gdybyś raczył spojrzeć do artykułu z linku i go przeczytał, to byś się zorientował dlaczego SQL wyświetla błąd.
ZaXaZ
Cytat(mar1aczi @ 16.04.2014, 08:09:02 ) *
Pisze w czym problem jak krowie na granicy.

Czytanie komunikatów i rozumienie wyświetlanych błędów nie boli.
  1. SELECT * FROM
  2. (SELECT `id`, `nick`, `log`, `when` FROM `logs` WHERE `x`='y' ORDER BY `id` DESC LIMIT 50) AS t
  3. ORDER BY t.id;

Poza tym, gdybyś raczył spojrzeć do artykułu z linku i go przeczytał, to byś się zorientował dlaczego SQL wyświetla błąd.


przeczytałem ale nie zrozumiałem co ma znaczyć bo z SQL umiem tylko podstawy i mi to przeważnie wystarcza.

co do tematu dzisiaj o pierwszej rozwiązałem tak:
  1. SELECT * FROM (SELECT * FROM `logs` WHERE `x`='y' ORDER BY `id` DESC LIMIT 50) tmp ORDER BY tmp.id ASC;

(przerobione z najelpszej odpowiedzi na StackOverFlow.com

tylko że błąd wyświetlał się przy dodawaniu postu i nie pokazywał jaki, ale dam "pomógł" za chęci,

edit:
(dla ciekawych jakby ktoś kiedyś potrzebował)

oba rozwiązania są podobne szybkością,
0.00040+ czasu,
średnio 0.00080-0.00090
Pyton_000
Przecież to się niczym nie różni poza tym że Ty pobierasz wszystko, a kolega wyżej tylko konkretne elementy.
ZaXaZ
Cytat(Pyton_000 @ 16.04.2014, 10:44:23 ) *
Przecież to się niczym nie różni poza tym że Ty pobierasz wszystko, a kolega wyżej tylko konkretne elementy.


no właśnie mi różnicy tutaj za dużej nie zrobiło bo mój skrypt to nie fejsbuk ;p jednak lepiej by było używać od @mar1aczi, a mój jakby się skrypt np. sprzedawało komuś wrednemu.
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.