Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Sortowanie
XvAK
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 22.12.2009

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


Witam

Mam problem z sortowaniem, ponieważ musi się odbyć ono na zasadzie, że ORDER BY będzie obowiązywać dla wiersza z większą datą. Skrypt aktualnie wygląda tak (wycinek):

  1. $mysql->query("SELECT `WaznyDo1`,`Godzina1`,`WaznyDo2`,`Godzina2`,`WaznyDo3`,`Godzina3` FROM `sh_lista` ORDER BY `WaznyDo1`,`Godzina1` ASC;");
  2. while ($wiersz = mysql_fetch_array($result))
  3. {
  4. $waznydo1 = $wiersz[0];
  5. $godzina1 = $wiersz[1];
  6. $waznydo2 = $wiersz[2];
  7. $godzina2 = $wiersz[3];
  8. $waznydo3 = $wiersz[4];
  9. $godzina3 = $wiersz[5];
  10.  
  11. // dalsza część skryptu wyświetlająca dane w sposób mniej więcej taki:
  12.  
  13. if(!empty($waznydo1)) {echo "$waznydo1 $godzina1";}
  14. if(!empty($waznydo2)) {echo "$waznydo2 $godzina2";}
  15. if(!empty($waznydo3)) {echo "$waznydo3 $godzina3";}
  16. }


Wygląda to mniej więcej tak (na czerwono oddzieliłem 'wyniki działań 1 zapętlenia')
(IMG:http://www.bankfotek.pl/image/789452.jpeg)

Zmienienie zapytania (końcówki) z ORDER BY `WaznyDo1`,`Godzina1` ASC; na ORDER BY `WaznyDo1`,`Godzina1`,`WaznyDo2`,`Godzina2`,`WaznyDo3`,`Godzina3` ASC; niewiele zmienia
(IMG:http://www.bankfotek.pl/image/789455.jpeg)

Nie miałbym problemów z sortowaniem gdyby daty i godziny były w 1 tabeli, ale problem jest że są w 3 rożnych.

Najprostszym rozwiązaniem byłoby połączenie tych 3 kolumn i wtedy posortować ale lecz musza być one osobno więc to nie wypali.
Można je jakoś tymczasowo połączyć tylko na czas sortowania lub jakoś inaczej to rozwiązać?


Tak aby wynik wyglądał w ten sposób:
(IMG:http://www.bankfotek.pl/image/789471.jpeg)

Z góry dzięki za pomoc.

Ten post edytował XvAK 24.10.2010, 13:31:01
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Daimos
post
Post #2





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

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


http://dev.mysql.com/doc/refman/5.5/en/join.html
Go to the top of the page
+Quote Post
XvAK
post
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 22.12.2009

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


Dalej nie potrafię napisać zapytania w ten sposób aby wyniki były sortowane po najniższej dacie z pośród 6 różnych pól (WaznyDo1 + Godzina1 LUB WaznyDo2 + Godzina2 LUB WaznyDo3 + Godzina3)
Go to the top of the page
+Quote Post
Daimos
post
Post #4





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

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


Po pierwsze, nie rozumiem dlaczego w oddzielnych kolumnach trzymasz datę i godzinę, do tego jest TIMESTAMP i DATETIME. Wtedy łączysz tabelę i sortujesz po całej dacie, a nie jakieś magiczne cuda z sortowaniem godziny i daty jednocześnie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
XvAK
post
Post #5





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 22.12.2009

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


Cytat(my salsa @ 24.10.2010, 17:09:23 ) *
Po pierwsze, nie rozumiem dlaczego w oddzielnych kolumnach trzymasz datę i godzinę, do tego jest TIMESTAMP i DATETIME. Wtedy łączysz tabelę i sortujesz po całej dacie, a nie jakieś magiczne cuda z sortowaniem godziny i daty jednocześnie (IMG:style_emoticons/default/smile.gif)

OK, ale to i tak nie będzie miało znaczenia na wynik końcowy, bo nawet w takim przypadku trzeba będzie sprawdzić który z połączonych wierszy ma wartość najmniejszą.
Obecnie muszę sprawdzić spośród 2 (data,godz) x 3 (1,2,3) komórek, a przypadku połączenia ich (jak mówisz) 1 x 3.

Być może tak zrobię, ale najpierw chciałbym wiedzieć jak można sprawdzić który z danych wierszy ma najmniejszą wartość i posortować (ORDER BY (komórka z najmniejszą wartością) ASC).
Go to the top of the page
+Quote Post

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: 22.08.2025 - 18:06