Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » elliot_pl 02:41
 » Mariosti 02:28
 » cVas 02:04
 » piszczyk 01:08
 » Rafael_3D 01:04
 » Zbyszek.J 00:50
 » Fl@sh 00:31
 » MARC 00:31
 » Star Ride 00:26
 » Holyboy 00:16
 » Paweł27 00:05
 » abes99 00:02
 » wrrr 23:58
 » emigrus 23:52
 » Wedrowiec 23:52
 » hideox 23:51
 » Soulburne 23:35

 Dzisiaj przeczytano
 41107 postów,
 wczoraj 25974

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2024
A R C H I W A L N A   W I A D O M O Ś Ć
    

MySQL i sortowanie , Deus ex machine 5/09/08 15:23
ma ktos pomysl jak zrobic prosto?
Przykladowo jest tabelka 100k rekordow
Imie | numer
imiona i numery moga sie powtarzac, a takze ich pary moga sie powtarzac np.
andzia | 13
andzia | 15
jozek | 13
jozek | 10
andzia | 13
andzia | 13
andzia | 13

Teraz chce otrzymac posortowany wynik najpierw same 13 pozniej 10 pozniej 15, a dalej juz pozostale. Oczywiscie kolejnosc przykladowa.
Poki co Jenot wymysli union, ja nic lepszego nie wymyslilem, ale moze ktos ma jakis fajny pomysl?
Rzeczywiste tabele nie maja po 2 pol, tylko po 15 i wiecej. To tylko do zobrazowania problemu.

"Uti non Abuti"

  1. siakiś , Wedrowiec 5/09/08 15:37
    if()

    "Widziałem podręczniki
    Gdzie jest czarno na białym
    Że jesteście po**bani"

    1. nie bardzo widze jako , Deus ex machine 5/09/08 15:42
      go tutaj uzyc?

      "Uti non Abuti"

  2. dodaj kolejne pole , Norton 5/09/08 15:53
    daj tinyint, nazwij je priorytet czy kolejność.
    potem updatnij przypisując dla rekordów z numer=13 3
    dla dziesiątek 2, dla 15 przypisz 1.
    Potem posortuj wg nowej kolumny.

    Możesz dodać też nową tabelę "priorytety"
    numer|priorytet

    13 | 3
    10 | 2
    15 | 1

    potem join po kluczu "numer" i sortowanie po priorytet

    Zmień swój podpis na Boardzie
    maks 100 znaków, 3 linie,
    zabroniony spam oraz reklama

  3. CASE , bwana 5/09/08 16:31
    select case numer_osoby
    when 13 then 1
    when 15 then 2
    else 3
    end,
    imie_osoby
    from osoby
    order by 1(*)

    (*) nie jestem pewien, czy w MySQL można określić w ten sposób sortowanie, w Oracle order by 1,3,5 oznacza sortowanie według 1, 3, 5 kolumny z wyniku zapytania. Jeśli tak nie można, należy pewnie przepisać wyrażenie case do klauzuli order by, czyli uzyskać zapis:

    select case numer_osoby
    when 13 then 1
    when 15 then 2
    else 3
    end,
    imie_osoby
    from osoby
    order by
    case numer_osoby
    when 13 then 1
    when 15 then 2
    else 3 end


    Ten drugi sposób mi się nie podoba, bo trzeba przepisywać coś, co już istnieje, dlatego wolę momentami orasql od ansi:-)
    end

    "you don't need your smile when I cut
    your throat"

    1. chcialem zaproponowac podobne rozwiazanie , HussaR 5/09/08 16:43
      z funkcja DECODE - przy czym tez nie jestem pewien czy to nie tylko dla Oracle'a ;)

      Największym marzeniem człowieka jest latać i nie
      spaść na ryj

      1. tiaaa, decode to pierwsza rzecz jakiej użyłbym pod orakielem , bwana 5/09/08 22:17
        ale w majsikuelu brak:-)

        "you don't need your smile when I cut
        your throat"

  4. ... , Amber 5/09/08 18:45
    select * from tabelka order by numer asc/desc
    zależenie czy od najmniejszej czy od największej

    union jest jak chce się wyciągnąć z 2 tabel

    Akcja wyborcza 2011:
    uratuj polskę oddaj babci dowód!!!

    1. zwykly order nie wystarczy , Deus ex machine 5/09/08 19:26
      union mialby polegac na polaczeniu wynikow kilku selectow (po kazdym kolejnym warunku).

      Bardziej przemawia zastosowanie case lub if i tworzenie wirtualnej kolumny, zobacze w poniedzialek i potestuje .)

      "Uti non Abuti"

      1. a to zależy , bwana 5/09/08 22:19
        np. od tego, czy baza gwarantuje czy nie gwarantuje kolejności wierszy zgodnej z kolejnością wyrażeń połączonych unią (union, union all). Jeśli gwarantuje, to unia BEZ klauzuli order by załatwi sprawę:-)

        "you don't need your smile when I cut
        your throat"

  5. ... , Amber 5/09/08 19:38
    case i if mozna dawac ale trzeba okreslic konkretne warunki, a ty chcesz wyciagac po liczbach nie?

    Akcja wyborcza 2011:
    uratuj polskę oddaj babci dowód!!!

  6. w accessie , Zajkos 5/09/08 21:21
    bym zrobił tak - dodał tabele z kolumnami numer i priorytet, połaczył ja relacją z tabelą docelową i zrobił selecta z wszystkich pol tabeli pierwotnej plus priorytet z drugiej tabeli sortujac po tym polu

    
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL