Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] sortowanie wyników
Zigi
post
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 3
Dołączył: 20.11.2004

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


Witam,
mam pewna tabele o takiej strukturze i danych

id | wiersz | kolumna | wartosc | arkusz_id
1|1 |1 | 45|1
2|1|2 |SCV |1
3|1 |3 |423 |1
4|1 |4 |455 |1
5|2 |1 |432 |1
6|2 |2 |BLO |1
7|2 |3 |42 |1
9|3 |1 |453 |1
10|3 |2 |SCV |2
12|3 |3 |453 |2
13|3 |4 |342 |2
14|4 |5 |354 |2
.....................

Jest to zaimportowany arkusz z excela chcialbym to posortowac tak, aby otrzywac w wyniku posortowane wartosci
w taki sposob, że kluczem glownym sortujacym jest testk w 2 kolumnie.
Udało mi się wymyślić takie zapytanie, ale ono nie sortuje tych wyników względem wartosci i 2 kolumny ale reszta jest zwracana tak jak potrzebuję.

  1. SELECT * FROM `obrobka` GROUP BY (`obrobka_kolumna`=2 AND `obrobka_wartosc`), `obrobka_wiersz`, `obrobka_kolumna`


Ma ktos może pomysl jakiej komendy sortujacej uzyc?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Zigi
post
Post #2





Grupa: Zarejestrowani
Postów: 57
Pomógł: 3
Dołączył: 20.11.2004

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


@heaven jestem praktycznie pewnien, ze jest opcja czasowego zawieszania zmiany indeksu. Kiedys czytalem nawet taka komende, ale teraz nie moge tego znalezc. Pomysl o tym, ze na pewno nie tylko ja mam do zrobienia w jednym ciagu sporo instrukcji UPDATE (INSERT) i nie potrzebuje w tym momencie indeksowania co zmiane/dodanie wartosci, wiec cos takiego powinno byc.

Niestety to zapytanie:
  1. UPDATE tabela t, (SELECT * FROM tabela WHERE kolumna = 2) AS tab
  2. SET t.sortowanie = tab.wartosc
  3. WHERE t.wiersz = tab.wiersz AND t.arkusz_id=tab.arkusz_id

wykonywalo sie 20 minut i je zabilem, bo uznalem, ze dlugej nie ma sensu czekac. Oczywiscie sprawdzilem, czy cos zmienilo w tabeli i okazalo sie, ze nie zmienlo nawet jednego rekordu... Moze przez to, ze teraz mam w tabeli 100tys rekordow.

Robie takie zapytanie:
  1. <?php
  2. $sql2 = "SELECT * FROM `tabela` WHERE kolumna = 2 ORDER BY `wartosc`";
  3. while ($row = $this->b->fetchArray()) {
  4. $tab0[$i] = $row[wartosc];
  5. $tab1[$i] = $row[wiersz];
  6. $tab2[$i] = $row['arkusz_id'];
  7. $i++;
  8. }
  9. ?>


Zwrocone rekordy wrzucam w tablice i robie zapytania w petli

  1. <?php
  2. for($i = 0, $ik = count($tab0) ; $i < $ik ; $i++) {
  3.  $sql2 = 'UPDATE tabela t SET t.sortowanie = ''.$tab0[$i].'' WHERE t.wiersz = ''.$tab1[$i].'' AND t.arkusz_id = ''.$tab2[$i].''';
  4. $this->b->query($sql2);
  5.  
  6. }
  7. ?>


Niestety to tez jest beznadziejnie wolne w 300s przerabia petle jakies 2000-2200 razy. (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif) Taka aktualizacja bedzie wymagala zazwyczaj 2000-15000 iteracji petli, aby wykonac zadanie.
Wyrzucilem nawet index z kolumny `sortowanie`myslac, ze to cos da a tutaj wydajnosc taka sama. Beznadziejna.

Bede chyba musial zrobic w projekcie ograniczenie, ze mozna wybrac podstawowa kolumne przed importem danych do tabeli a pozniej ostrzezenie, ze zmiana bedzie trwac baaardzo dlugo albo wyrzucac dany `arkusz_id`i importowac od poczatku...

Ten post edytował Zigi 12.02.2008, 16:05:48
Go to the top of the page
+Quote Post

Posty w temacie
- Zigi   [MySQL] sortowanie wyników   8.02.2008, 01:40:45
- - nevt   jedynej jaka jest w SQL: ORDER BY ....   8.02.2008, 08:08:06
- - Zigi   Niestety ORDER BY nie potrafie zmusic zeby posorto...   8.02.2008, 14:18:38
- - nevt   [SQL] pobierz, plaintext SELECT * FROM tabela ORDE...   8.02.2008, 14:35:06
- - Zigi   Dzieki @nevt za zainteresowanie, ale niestety to n...   8.02.2008, 14:53:47
- - Indeo   Namieszałeś trochę i nikt teraz nie rozumie Twoic...   8.02.2008, 17:50:33
- - Zigi   Postaram sie jeszcze raz wyjasnic jak maja wyglada...   9.02.2008, 13:16:29
- - heaven   cos mi w tym wyniku nie pasuje bo jest 2 razy inde...   10.02.2008, 20:28:33
- - Zigi   Bardzo przepraszam faktycznie pierwsze wystapienie...   10.02.2008, 23:23:55
- - heaven   Wisisz mi piwo [SQL] pobierz, plaintext SELECT ...   11.02.2008, 11:09:59
- - Zigi   Bardzo Ci dziekuje @heaven za skonstruowanie zapyt...   11.02.2008, 22:03:30
- - heaven   Szczerze wątpie czy uda sie to zrobic bez JOIN. Mo...   11.02.2008, 22:19:30
- - Zigi   Tez nad tym rozwiazaniem, aby dodac ta dodatkowa k...   11.02.2008, 22:45:07
- - heaven   Druga tabela wedlug mnie nic nie wniesie. SELECT w...   11.02.2008, 22:55:29
- - Zigi   Chyba jednak bede musial sie skusic na rozwiazanie...   11.02.2008, 23:14:08
- - heaven   Zobacz to [SQL] pobierz, plaintext SELECT t.id,t.w...   11.02.2008, 23:17:16
- - Zigi   Niesety cos z tym zapytaniem chyba jest nie tak. W...   12.02.2008, 00:07:41
- - heaven   Zapytanie dziala ale widocznie przy takiej liczbie...   12.02.2008, 11:38:55
|- - Zigi   Kolumne na sortowanie dodalem juz wczoraj i indeks...   12.02.2008, 12:43:07
- - heaven   Musialbys chyba zdjac calkiem index i pozniej zalo...   12.02.2008, 13:16:35
- - Zigi   @heaven jestem praktycznie pewnien, ze jest opcja ...   12.02.2008, 16:02:07


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

 



RSS Aktualny czas: 5.10.2025 - 10:36