[MySQL] =?ISO-8859-2?Q?Odwr=F3cenie_domy=B6lnego_order_by=2C?==?ISO-8859-2?Q?_ale_bez_parametru=2E?=
sawic - 12-01-2007 00:29
[MySQL] =?ISO-8859-2?Q?Odwr=F3cenie_domy=B6lnego_order_by=2C?==?ISO-8859-2?Q?_ale_bez_parametru=2E?=
Witam. Zapisuję do bazy sporo danych w krótkim czasie. Gdy zrobię select * from table To kolejność wypisania danych jest dokładnie taka jaka by mnie interesowała, jednakże w odwróconej kolejności. Czyli otrzymuję kolejność odwrotną do wpisywania rekordów.
Nie chciałby dodawać dodatkowych parametrów, ustalających kolejność. Czy dało by się zrobić coś aby odwrócić domyślną kolejność sortowania ? Coś ala: select * from table order by desc
Pozdrawiam
lost - 12-01-2007 00:29
> Coś ala: > select * from table order by desc > a próbowałeś takiej komendy? a przeczytałeś może ten fragment dokumentacji dotyczący komendy select ?
jak juz zdecydujesz się spróbować to użyj raczej select * from tabela order by kolumna desc
--
sawic - 12-01-2007 00:29
lost napisał(a): >> Coś ala: >> select * from table order by desc >> > a próbowałeś takiej komendy? > a przeczytałeś może ten fragment dokumentacji dotyczący komendy select ? > > jak juz zdecydujesz się spróbować to użyj raczej > select * from tabela order by kolumna desc
A nie przeczytałeś co pisałem ? Oczywiście, że tego próbowałem i wiem, że nie działa. order by kolumna desc - też nie działa(tak jak tego oczekuję), a to dlatego, że po tej kolumnie posortuje desc a pozniej i tak w kolejnosci odwrotnej do dodawania rekordów.
Jak się nie da żadnego order by to MySQL wyświetli rekordy w kolejności odwrotnej do dodawania. Mnie interesuje aby nie skupiać się na nakazaniu sortowania wg jakiejś konkretnej kolumny, tylko aby odwrócić kolejność tego domyślnego sortowania. MyQSL de facto domyślnie sortuje wg: `ostatnia aktualizacja rekordu` desc, a ja chcę aby to bylo asc ;)
Mam nadzieję, że tym razem wytłumaczyłem jaśniej.
pozdrawiam
Piotr Keplicz - 12-01-2007 00:29
sawic: > Jak się nie da żadnego order by to MySQL wyświetli rekordy w kolejności > odwrotnej do dodawania. Mnie interesuje aby nie skupiać się na nakazaniu > sortowania wg jakiejś konkretnej kolumny, tylko aby odwrócić kolejność > tego domyślnego sortowania.
Nie ma czegoś takiego, jak domyślne sortowanie. W pewnych przypadkach może się wydawać, że to kolejność dodawania rekordów, ale to błędne założenie.
> MyQSL de facto domyślnie sortuje wg: > `ostatnia aktualizacja rekordu` desc, a ja chcę aby to bylo asc ;)
To dodaj kolumnę typu TIMESTAMP, która (o ile nie poda się wartości jawnie) będzie przechowywać datę ostatniej aktualizacji i w/g niej sortuj.
..pk.
lost - 12-01-2007 00:29
> > Mam nadzieję, że tym razem wytłumaczyłem jaśniej. > nie możesz zakładać jakiegokolwiek sortowania bez użycia jawnie order by pomimo pozornego sortowania wyników w zapytaniu bez order by
i po drugie zapis w bazie jest w porządku nieznanym, sortujesz jedynie wyniki zapytania ale nie zmieniasz porządku w zapisanych tabelach chyba że przepisujesz tabelę do innej tabeli w jakimś porządku pozdrawiam
--
Maciek Dobrzanski - 12-01-2007 00:29
"sawic" <sawicc@wytnij.to.gmail.com> wrote in message news:eo69lh$5u9$1@news.onet.pl...
> dlatego, że po tej kolumnie posortuje desc a pozniej i tak w kolejnosci > odwrotnej do dodawania rekordów.
Z definicji nie istnieje taka kolejność.
> Jak się nie da żadnego order by to MySQL wyświetli rekordy w kolejności > odwrotnej do dodawania.
Nie prawda:
mysql> CREATE TABLE t1 (a TINYINT NOT NULL, b CHAR(5) NOT NULL PRIMARY KEY); Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO t1 VALUES (1, 'ALA'); Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO t1 VALUES (2, 'MA'); Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO t1 VALUES (3, 'KOTA'); Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM t1; +---+------+ | a | b | +---+------+ | 1 | ALA | | 3 | KOTA | | 2 | MA | +---+------+ 3 rows in set (0.00 sec)
> tego domyślnego sortowania. MyQSL de facto domyślnie sortuje wg: `ostatnia > aktualizacja rekordu` desc, a ja chcę aby to bylo asc ;)
Utwórz kolumnę data_aktualizacji typu TIMESTAMP z atrybutem ON UPDATE CURRENT_TIMESTAMP i sortuj wg. niej.
Maciek
=?ISO-8859-2?Q?Micha=B3?= Kuratczyk - 13-01-2007 00:00
sawic wrote: > Zapisuję do bazy sporo danych w krótkim czasie. > Gdy zrobię > select * from table > To kolejność wypisania danych jest dokładnie taka jaka by mnie > interesowała, jednakże w odwróconej kolejności. Czyli otrzymuję > kolejność odwrotną do wpisywania rekordów. > > Nie chciałby dodawać dodatkowych parametrów, ustalających kolejność. > Czy dało by się zrobić coś aby odwrócić domyślną kolejność sortowania ? Dopóki nie podasz ORDER BY, to kolejność jest PRZYPADKOWA, a nie domyślna. Jeśli chcesz mieć posortowane dane, to musisz podać ORDER BY. (w przypadku MySQLa sortowanie gwarantuje też GROUP BY, ale polecam i tak dopisać ORDER BY, na wypadek gdybyś kiedyś chciał to zapytanie odpalić na innej bazie).
-- Michał Kuratczyk
sawic - 13-01-2007 00:01
Maciek Dobrzanski napisał(a): > Nie prawda:
Wygląda na to, że masz rację.
> Utwórz kolumnę data_aktualizacji typu TIMESTAMP z atrybutem ON UPDATE > CURRENT_TIMESTAMP i sortuj wg. niej.
Nie da rady. Musiałbym do timestamp zapisywać mikrosekundy. Wiele rekordów jest wpisywane na raz, i dokładność do 1 sekundy jest o wiele za mała. Chciałem dodać pole typu int i wpisywać: date_format(now(), '%i%s%f') aby tego później użyć do sortowania, ale mikrosekundy są zawsze na 0. Wobec konieczności szybkiego rozwiązania problemu i braku innego znanego mi rozwiązania dodałem se w php zmienną, którą inkrementuję. Chciałem po prostu tego uniknąć.
A te mikrosekundy jak wyciągnąć z now() to nie mam pojęcia. Chyba się nie da.
Pozdrawiam
=?ISO-8859-2?Q?S=B3awomir_Szysz=B3o?= - 14-01-2007 00:01
=?ISO-8859-2?Q?Re:_[MySQL]_Odwr=F3cenie_domy=B6lnego_order_by,_ale_bez_pa?== ?ISO-8859-2?Q?rametru.?=
Dnia Fri, 12 Jan 2007 16:44:31 +0100, sawic <sawicc@wytnij.to.gmail.com> wklepał(-a):
>Nie da rady. Musiałbym do timestamp zapisywać mikrosekundy. >Wiele rekordów jest wpisywane na raz, i dokładność do 1 sekundy jest o >wiele za mała.
To dodaj pole autoincrement i po nim sortuj. -- Sławomir Szyszło mailto:slaszysz@poczta.onet.pl Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/ Archiwum http://groups.google.com/groups?grou...mp.bazy-danych
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Gdzie MySQL 4.1, a gdzie 5.0?
[MS SQL] "set names" (mySQL) w MS SQL
oracle -> oracle lub oracle -> mysql replikacja - programy
[mysql 4.0] SELECT t1.id, t1.foo FROM t1 oraz COUNT t2 w jednym zapytaniu.
[MySQL] Zwrot tego, co pasuje i nie pasuje :-/
[pgsql] Dostosowanie składni MySQL 5.0 -> PGSQL 8.1
[mysql] galeria zdjec - numerowanie zdjec
[MySQL] Zapytanie z pliku , wynik do pliku
[mysql] CONCAT agregujący, ale nie GROUP_CONCAT()
mysql data 0000-00-00 na koniec
zanotowane.pldoc.pisz.plpdf.pisz.plradioaktywni.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|