Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]sortowanie na podstawie wiecej niz jednego pola
Forum PHP.pl > Forum > Przedszkole
shreker
Mam pytanie, czy da się sortować dane z bazy na podstwaie wiecej niz jednego pola. Mamy np. pola w tabeli: id, imie, nazwisko, kod, adres, ...
mam zapytanie obecne: select * from tabela order by nazwisko asc
a chciałbym żeby sortowanie odbywało się po nazwisku i imieniu.
Mephistofeles
ORDER BY nazwisko, imie ASC
shreker
próbowałem, niestety nie działa :-(
potreb
Jak nie działa, nie sortuje po nazwisku?
shreker
czytanie ze zrozumieniem: sortowanie na podstawie wiecej niz jednego pola
nospor
shrek ty sie nie oburzaj tylko sam czytaj ze zrozumieniem. To co dostales dziala. Kazdemu z nas dziala tylko tobie jednemu nagle nie...
moze źle skopiowales, moze dziala inaczej niz myszlisz.... podaj wiec laskawie swoj kod po zmianach, podaj dane, podaj jakiego sortowania oczekiwales a nie sie tu burzysz.

powtarzam: kod co dostales dziala.
shreker
całe zapytanie wygląda dokładnie tak: select * from tabela order by nazwisko, imie asc limit $startpoint,$perpage
jest to zapytanie w funkcji stronicującej. kiedy sortuje według naziska, albo imienia - działa bez problemów, natomiast kiedy to połączyłem to sortuje tylko według nazwiska. Co do burzenia się to nie burzę się, ale pytanie potreba zostało sformułowane jakby miało sortować po nazwisku, a nie sortowało, więc nie ma co się dziwić że napisałem o czytaniu ze zrozumieniem. Skoro jednak ma to działać a nie działa, to co może być powodem ?
nospor
Moze ty poprostu inaczej niz my rozumiesz "sortowanie po nazwisku i imieniu" smile.gif
Powtarzam jeszcze raz. Pokaz dane po sortowaniu a nastepnie pokaz jakiego wyniku oczekiwales.
shreker
sortowanie rozumiem tak:
przed sortowaniem:
(nazwisko, imie)
b, a
c, d
a, b
d, c
obecnie mam tak:
a, b
b, a
c, d
d, c
a ma być:
a, a
b, b
c, c
d, d

proste ? co w tym niezrozumiałego ?
nospor
Cytat
proste ? co w tym niezrozumiałego ?
No widzisz, znowu sie burzysz i znowu bez powodu. Tak, to jest proste. ALe niestety to ty nie rozumiesz na czym polega sortowanie po dwóch polach. Tak wiec sie nie burz na przyszlosc tylko sie doksztalc winksmiley.jpg

sortowanie po dwoch polach polega na tym, ze gdy pierwsze pole bedzie kilka takich samych wartosci, to wowczas te rekordy zostana posortowane po drugim polu. Czyli u Ciebie wynik jest jak najbardziej prawidlowy. A ze ty sortowanie rozumiesz zupelnie inaczej to juz inna bajka tongue.gif

Cytat
a ma być:
a, a
b, b
c, c
d, d
Jakim cudem ci to w ogole moglo przyjsc do glowy? Przeciez przy takim sortowaniu kolumny mają wartosci z roznych rekordow. A zapytanie select nie miesza wartosci rekordow, tylko rekord traktuje jako rekord a nie mieszanke kilku
shreker
nie do końca nospor. dla przykładu: masz:
1. kowalski jan
2. kowalski zbigniew
3. kowalski adam

Jak według ciebie powinno być to posortowane, bo według mnie w kolejności: 3, 1, 2. Chyba że jest inne sortowanie.
nospor
Cytat
, bo według mnie w kolejności: 3, 1, 2.
Dokladnie w takiej. Cieszę się, ze wkoncu zalapales, bo to co pokazales w poprzednim poscie to bylo dalekie od "zalapania" smile.gif
shreker
nospor, ale mi od samego początku o to właśnie chodziło. Tylko dalej nic z tego nie wynika. Skoro zapytanie jest dobre, to co może być powodem że dane są sortowane tylko według nazwiska?
nospor
Cytat
ale mi od samego początku o to właśnie chodziło.
NIe, w tym poscie:
Cytat
sortowanie rozumiem tak:
przed sortowaniem:
(nazwisko, imie)
b, a
c, d
a, b
d, c
obecnie mam tak:
a, b
b, a
c, d
d, c
a ma być:
a, a
b, b
c, c
d, d
Przedstawiles ZUPELNIE inna idee sortowania.

Pokaz wiec jeszcze raz wszystkie dane, nie zadne a b c d tylko poprawne dane, gdzie sa inne nazwiska a nie tylko kowalski, bo podejrzewam ze jednak nadal masz na mysli inne sortowanie smile.gif

No dobra, a dla takich danych w jakiej kolejnosci baza zwraca ci dane
1. kowalski jan
2. kowalski zbigniew
3. kowalski adam
4. awangarda zbigniew

? Bo ustalilismy ze powinna zwracac tak:
awangarda zbigniew
kowalski adam
kowalski jan
kowalski zbigniew

A tobie jak zwraca?
shreker
zwraca w kolejnosci: 4, 1, 2, 3. czyli według samego nazwiska, jeżeli dam według imienia to będzie według imienia, ale w połączeniu sortuje tylko według nazwiska. nie mam pojęci już co może być powodem ?
nospor
Pokaz zrzut ekranu z PMA bo ci normalnie nie wierze smile.gif
Tylko taki zrzut, zeby bylo widac wprowadzone zapytanie smile.gif

ps: bo sprawdzales to w PMA? Bo jesli opierasz sie tylko na swoim skrypcie php, to prawdopodobnie gdzies sie jarbnąłeś.
shreker
zapytanie jest na pewno ok, bo próbowałem na innej tabeli, z innymi danymi i hula. a na tej dupa. Jak namierzyc gdzie tkwi błąd !?!?!

cały skrypt pisałem sam, i podejrzewam że coś jest walnięte w skrypcie, tylko jak to najprościej namierzyć, CO exclamation.gif

przedtem stronicowanie miałem oparte o starą wersję twego stronicowania, to zechciało mi się kombinacji i pisania swego stronicowania, szlag by to trafił exclamation.gif!!!
nospor

to zacznijmy od podstaw:
1) Temat: Jak poprawnie zada pytanie
2) jak sie zastosujesz do pierwszego, to pokaz kod. A potem pokaz dokladnie co ci zwrocil twoj skrypt. Nie zadne przykladowe dane, tylko dokladnie.
shreker
posiedzę jeszcze poszukam może dojdę, w czym problem, pewnie jakaś pierdoła, tylko od czego zacząć ...
nospor
Cytat
tylko od czego zacząć ...
blinksmiley.gif
Przeciez w poprzednim poscie podalem ci dwa punkty. Od nich masz zaczac....Twoje slowa:
Cytat
czytanie ze zrozumieniem:
kaem
@nospor, podziwiam Twoją cierpliwośćbiggrin.gif
@shreker - dałeś taki przykład:
Cytat
przed sortowaniem:
(nazwisko, imie)
b, a
c, d
a, b
d, c
obecnie mam tak:
a, b
b, a
c, d
d, c
a ma być:
a, a
b, b
c, c
d, d

Jak ma być w wyniku np. a, a skoro przed sortowanie nie ma takiego rekordu!? Tak jak napisano wcześniej, może inaczej rozumiesz te sortowanie albo chcesz zrobić coś zupełnie innego. Fajnie by było jak byś jasno wytłumaczył co chcesz osiągnąć i podał jakieś przykłady danych, na których pracujesz.
szmerak
Ja również nie rozumiem o co mu chodzi.
Hmm z tego co napisałeś wynika że
  1. //Przykład pracowników w bazie danych
  2. Zubrzycki Józef
  3. Kowalski Adam
  4. Lauko Krzysztof
  5. Nowacki Adam
  6.  
  7. //Sortuje ci tak
  8. Kowalski Adam
  9. Lauko Krzysztof
  10. Nowacki Adam
  11. Zubrzycki Józef
  12. //w 100% te sortowanie jest wykonane dobrze i to jest także w 100% odpowiedź na twoje pytanie.
  13.  
  14. //ty napisałeś że ma być tak
  15. Kowalski Adam
  16. Lauko Adam
  17. Nowacki Józef
  18. Zubrzycki Krzysztof

Tak więc na tym przykładzie mogę ci pokazać błąd twojego rozumowania.
więc chciał byś pójść do pracy w której główna baza danych jest sortowana na twojej zasadzie? (p.s oczywiscie jest to nonsens) Myśle że wypłaty byś się nie doczekał.
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.