Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Komenda do sortowania tabeli?
lesz735
post 18.01.2015, 08:59:50
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 26.12.2014

Ostrzeżenie: (0%)
-----


Polecenie SELECT*FROM tabela ORDER BY nazwisko zwraca wysortowane wyniki. Chciałbym posortować tabelę żródłową czy jest na to jakoś komenda?
Go to the top of the page
+Quote Post
Kshyhoo
post 18.01.2015, 09:13:20
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Masz bana na Google? jak posortować tabelę MySQL.


--------------------
Go to the top of the page
+Quote Post
lesz735
post 18.01.2015, 17:01:15
Post #3





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 26.12.2014

Ostrzeżenie: (0%)
-----


Nie mam bana; przejrzałem kilka odpowiedzi: są typu "po co ci to" lub ORDER BY. Przejrzałem też też PHP i MySql 785 stron prawie bez obrazków a ponieważ nie mam zamiaru tu siedzieć do emerytury więc proszę dobrych ludzi żeby podzielili się swoją wiedzą jeżeli zechcą; gdybyś potrzebował podpowiedzi z elektryki to zapraszam, w tym już jestem dobry.
Go to the top of the page
+Quote Post
Kshyhoo
post 18.01.2015, 17:13:44
Post #4





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Wiesz, leniom nie wróżymy przyszłości na tym Forum...
Pierwszy wynik a linku, który podałem: http://webmade.org/kursy-online/sortowanie...-kurs-mysql.php
Cytat
Rodzaj sortowania nie jest obowiązkowy. Dostępne są dwa rodzaje sortowania:

ASC - sortowanie rosnąco, domyślny sposób sortowania
DESC - sortowanie malejąco

Przykład zastosowania:

SELECT `id`, `nazwisko` FROM `nba` ORDER BY `punkty` DESC

Powyższy przykład wyświetli wszystkie wiersze tabeli nba posortowane według pola punky od największej wartość do najmniejszej. Możemy również sortować po kilku polach, np:

SELECT `id`, `nazwisko` FROM `nba` ORDER BY `punkty`, `nazwisko` DESC


--------------------
Go to the top of the page
+Quote Post
lesz735
post 18.01.2015, 17:30:15
Post #5





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 26.12.2014

Ostrzeżenie: (0%)
-----


Te komendy to ja znam; może się mylę bo jestem bardzo początkujący ale myślę że Twoja odpowiedź jest błędna ponieważ sortuje wyniki a nie tabelę; jeżeli sortuje tabelę to po Twojej komendzie komenda SELECT*FROM nba powinna zwrócić tabelę posortowaną a raz sprawdziłem i tak nie jest. Sprawdzę jeszcze dokładniej i odpiszę; być może za kilka dni bo teraz mój czas na sql się kończy.
Pozdrawiam.
//faktycznie jestem leniwy ale dużo pracuję
Go to the top of the page
+Quote Post
Kshyhoo
post 18.01.2015, 17:36:15
Post #6





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Cytat(lesz735 @ 18.01.2015, 17:30:15 ) *
...myślę że Twoja odpowiedź jest błędna ponieważ sortuje wyniki a nie tabelę

Może napisz dokładniej, co chcesz osiągnąć...


--------------------
Go to the top of the page
+Quote Post
SpiritCode
post 18.01.2015, 18:06:33
Post #7





Grupa: Zarejestrowani
Postów: 167
Pomógł: 35
Dołączył: 29.12.2014
Skąd: Otwock

Ostrzeżenie: (0%)
-----


  1. ALTER TABLE tablename ORDER BY columnname ASC;

Pamiętaj, że każda modyfikacja danych nie spowoduje że znów się posortują. Chyba, że napiszesz do tego procedurę wink.gif
Go to the top of the page
+Quote Post
Crozin
post 18.01.2015, 20:23:10
Post #8





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


1. W SQL-u o ile nie podasz jawnie sortowania (klauzula ORDER BY) należy założyć, że wyniki zwrócone są w kompletne losowej kolejności.
2. Zasugerowane przez @SpiritCode rozwiązanie na 99% nie jest tym czego potrzebujesz ani szukasz: http://dev.mysql.com/doc/refman/5.7/en/alt...140236079069136
3. Dlaczego po prostu nie chcesz dodać do zapytania klauzuli ORDER BY?
Go to the top of the page
+Quote Post
lesz735
post 18.01.2015, 20:30:49
Post #9





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 26.12.2014

Ostrzeżenie: (0%)
-----


Cytat(Crozin @ 18.01.2015, 20:23:10 ) *
3. Dlaczego po prostu nie chcesz dodać do zapytania klauzuli ORDER BY?
.
Chcę na tabeli posortowanej wg innego klucza wykonywać inne operacje a wtedy kolejność rekordów W ŹRÓDŁOWEJ tabeli będzie miała znaczenie.
Go to the top of the page
+Quote Post
Crozin
post 18.01.2015, 20:36:23
Post #10





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Możesz rozwinąć? Bo wygląda na to, że w innym miejscu masz coś konkretnie zrypanego. Szczególnie zważywszy na punkt pierwszy z mojego wcześniejszego postu.
Go to the top of the page
+Quote Post
lesz735
post 18.01.2015, 20:54:31
Post #11





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 26.12.2014

Ostrzeżenie: (0%)
-----


Cytat(SpiritCode @ 18.01.2015, 18:06:33 ) *
  1. ALTER TABLE tablename ORDER BY columnname ASC;

Dzięki bardzo!! smile.gif. Prosta odpowiedź na moje pytanie. Działa poprawnie, sortuje tabelę źródłową a nie wyniki:
mysql> SELECT *FROM czas1;
+----+-----------+-------------+
| id | imie | nazwisko |
+----+-----------+-------------+
| 7 | Adam | Małysz |
| 8 | Artur | Wielki |
| 9 | Sebastian | Małolepszy |
| 10 | Bernard | Aautorski |
+----+-----------+-------------+
4 rows in set (0.00 sec)

mysql> ALTER TABLE czas1 ORDER BY nazwisko;
Query OK, 4 rows affected (0.20 sec)
Records: 4 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM czas1;
+----+-----------+-------------+
| id | imie | nazwisko |
+----+-----------+-------------+
| 10 | Bernard | Aautorski |
| 9 | Sebastian | Małolepszy |
| 7 | Adam | Małysz |
| 8 | Artur | Wielki |
+----+-----------+-------------


Cytat(Crozin @ 18.01.2015, 20:23:10 ) *
1. W SQL-u o ile nie podasz jawnie sortowania (klauzula ORDER BY) należy założyć, że wyniki zwrócone są w kompletne losowej kolejności.

Chyba niekoniecznie losowy bo po zapytaniu o rekord 3 takiego wyniku się spodziewałem:

// to do tej tabeli po komendzie ALTER.

mysql> SELECT * FROM czas1 LIMIT 2,1;
+----+------+----------+
| id | imie | nazwisko |
+----+------+----------+
| 7 | Adam | Małysz |


Dziękuję za zainteresowanie moim tematem.


Go to the top of the page
+Quote Post
SpiritCode
post 19.01.2015, 06:24:10
Post #12





Grupa: Zarejestrowani
Postów: 167
Pomógł: 35
Dołączył: 29.12.2014
Skąd: Otwock

Ostrzeżenie: (0%)
-----


Załapałem się na 1% smile.gif
Go to the top of the page
+Quote Post
Crozin
post 19.01.2015, 07:38:52
Post #13





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


@lesz735: Ale zdajesz sobie sprawę z tego, że:
1. Dodanie bądź aktualizacja rekordów zniszczy ten porządek?
2. Zadziała to wyłącznie dla tabel typu MyISAM, których raczej nie powinieneś używać - InnoDB jest zdecydowanie preferowane.
3. Niemal pewne jest, że Twój inny kod, który wymaga takich dziwnych warunków jest zrypany.
Go to the top of the page
+Quote Post
SpiritCode
post 19.01.2015, 11:14:14
Post #14





Grupa: Zarejestrowani
Postów: 167
Pomógł: 35
Dołączył: 29.12.2014
Skąd: Otwock

Ostrzeżenie: (0%)
-----


Fakt, że czegoś takiego jak srotowanie tabeli źródłowej jest do kitu to jedno.
Inna rzecz, że możesz w dowolnej kolejności przecież posortować wynik zapytania.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 08:18