Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie w locie
Forum PHP.pl > Forum > Bazy danych > MySQL
corleone
Witam
Mam sobie w bazie daty np

$r[data]
--------
2005-10-12
2005-10-15
2005-12-01
2005-08-09


i teraz robimy takie cuś

$diff= (strtotime($r['data'])-strtotime(date("Y-m-d")))/86400 ;

no i dostajemy np

1
26
-3
8
-12

i chciałbym to posortować a dokładnie te daty ($r[data]) które będę odpowiadały posortowaniu tych liczb
Czy żeby to zrobić muszę to przepisać do innej tabeli czy można zrobbić to jakoś w locie...

Słyszałem kiedys że są jakieś wirtualne tabele w mysql-u i w nich można robić takie rzeczy ale mogę się mylić

Proszę o podpowiedz... ciekaw jestem jak to się robi w praktyce...

Pozdrawiam i życzę miłego dnia.
ActivePlayer
  1. ORDER BY (UNIX_TIMESTAMP(date) - UNIX_TIMESTAMP(now()))/86400 DESC

ale moge sie mylic... najlepiej poszukac w manualu mysqla
dr_bonzo
a nie po prostu
  1. SELECT roznica_dat()
  2. FROM tabela ORDER BY DATA ASC

Przeciez ta roznica ('data' - 'teraz') bedzie tak samo posortowana jak 'data'.
mike
Konia z żędem temu kto powie mi jaki to ma związek z php.

Przenoszę na Bazy danych -> MySQL
corleone
Cytat(dr_bonzo @ 2005-10-23 20:47:26)
a nie po prostu
  1. SELECT roznica_dat()
  2. FROM tabela ORDER BY DATA ASC

Przeciez ta roznica ('data' - 'teraz') bedzie tak samo posortowana jak 'data'.

Tylko że ja nie mam różnicy dat w tabeli a nawet jak bym miał to musiałbym je ciągle dopisywać bo codziennie ta różnica byłaby inna (porównuję z dniem dzisiejszym) rozwiązanie ActivePlayer będzie jednak zdecydowanie lepsze...
Sprawdzimy zobaczymy. Pozdrawiam cool.gif
dr_bonzo
Patrz:
Kod
(dzisiaj jest 2005-10-24)
DATA          | roznica
------------------
2005-10-12 | 12
2005-10-15 | 9
2005-12-01 | 38
2005-08-09 | -74

// po posorowaniu wg twoich kryteriow
2005-08-09 | -74
2005-10-15 | 9
2005-10-12 | 12
2005-12-01 | 38


czyli dostajesz daty posortowane od najstarszej do najnowszej, co mozesz uzyskac za pomoca
  1. ORDER BY DATA ASC

a magiczna 'roznica_dat()' to wynik lenistwa (nie chcialo mi sie tego kopiowac):
  1. (UNIX_TIMESTAMP(date) - UNIX_TIMESTAMP(now()))/86400
.
corleone
Thx smile.gif Teraz wszystko jasne...
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.