Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 21.01.2003 Skąd: 51° 25' 0N | 22° 26' 60E | 169 mnpm Ostrzeżenie: (0%)
|
witajcie.
nikt nie jest wszechwiedzący (poza Wszechwiedzącym), więc i ja piszę, żeby zasięgnąć porady. Oto mój problem: Przygotowuję stronę, której jedną z głównych części będzie archiwum brytyjskiej listy przebojów z lat 1950-2002, wraz z opisami pierwszego miejsca i komentarzami do wydań. Autor zażyczył sobie (bardzo mądrze, jak myślę), żeby na stronie pojawił się indeks wykonawców. I tu pies pogrzebany. Oto część tablicy odpowiedzielnej za dane notowań: [n1_wykonawca_1].[n1_wykonawca_2].[n2_wykonawca_1].[n2_wykonawca_2].[klucz1] gdzie: n1_wykonawca_1 - to nazwisko wykonawcy z miejsca 1 n1_wykonawca_2 - to nazwisko wykonawcy z miejsca 1 (w przypadku duetu) n2_wykonawca_1 - to nazwisko wykonawcy z miejsca 1 w przypadku, gdy na pierwszym miejscu znalazły się dwa single (częste w początkach listy) n2_wykonawca_2 - analogicznie klucz - artysta z opisu notowania, na którego autor chce zwrocic uwagę i wymienić go w indeksie. co potrzeba: 1. wyjąć wszystkich artystów w podanych 5 pól 2. posortować ich I tu się zaczęły dla mnie schody, bo ORDER BY przy SELECT załatwia mi tylko sortowanie według jednego z pól a nie według zbioru artystów z 5 pól. i jeżeli mam dane id1 BBB.CCC.DDD.AAA.EEE id2 AAA.GGG.WWW.QQQ.AAA to po przesortowaniu dostane AAA, GGG, WWW, QQQ, AAA, BBB, CCC, DDD, AAA, EEE zamiast AAA, AAA, AAA, BBB, CCC, DDD, EEE, GGG, QQQ, WWW o co walcze Macie jakieś pomysły? A może jestem nieukiem i spałem na lekcjach? (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Przyjaciele php.pl Postów: 398 Pomógł: 0 Dołączył: -- Skąd: Poznań Ostrzeżenie: (0%)
|
W MySql możesz to zrobić za pomocą klauzuli UNION, ale musisz mieć wersję 4.0 bo we wcześniejszych nie ma tej opcji. UNION grupuje wyniki kilku zapytań tworząc jeden zestaw danych, który można m.in. posrtować. Manual tutaj. Rozsądnym byłoby utworzyć z takiego zapytania widok (View) ale w MySql nie ma na razie takiej możliwości. Do takich zabaw musiałbyś zmienić silnik bazodanowy na Postgres'a.
Możesz też sprawę rozwiązać wrzucając kolejne wyniki zapytań do jednej tablicy w php i potem ją posortować. Co prawda niepotrzebnie obciąża to php ale w ostateczności może być przydatne. Najprawdopodobniej jednak, wszystkie te zabiegi są zbyteczne. Struktura danych, którą chcesz przechować jest prawdopodobnie na tyle prosta, że po prostu mógłbyś ominąć te problemy. Popełniłeś błędy na etapie projektowania struktury danych i teraz się to mści. Wrzuć wykonawców do jednej tabeli, a odpowiednie zależności utwórz za pomocą powiązań. Problem zniknie sam. |
|
|
|
djcinek sortowanie z kilku pól 21.01.2003, 02:29:37
scanner Jestes leniem, bo nie poszukals na forum
http://f... 21.01.2003, 11:20:36
dragossani Scanner, jesteś pewien, że udzieliłeś odpowiedzi n... 21.01.2003, 13:54:13
djcinek CytatScanner, jesteś pewien, że udzieliłeś odpowie... 21.01.2003, 14:19:59
djcinek Cytat(cut)
Do takich zabaw musiałbyś zmienić silni... 21.01.2003, 22:54:51
scanner CytatScanner, jesteś pewien, że udzieliłeś odpowie... 22.01.2003, 10:46:53
dragossani Tak na wstępie chciałbym zwrócić uwagę na precyzję... 22.01.2003, 13:02:24
djcinek dochodzi jeszcze jedna sprawa, a mianowicie wygoda... 22.01.2003, 13:49:37 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 05:09 |