[MySQL] "złączenie" ORDER BY |
[MySQL] "złączenie" ORDER BY |
10.05.2022, 13:44:49
Post
#1
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 5 Dołączył: 11.02.2011 Ostrzeżenie: (0%) |
Cześć,
sortuję wyniki zapytania po dwóch kolumnach:
gdzie aaa to wartość z jednego pola, a bbb ilość wyświetleń Ja połączyć to sortowanie tak, by jako peirwszy pokazał się wynik z najwiekszą ilością wyświetleń oraz własciwą zawartością pola aaa. GROUP BY nie wyświetla mi wszystkiego (bo nie ma wyswietleń lub włąściwej wartości pola AAA) Uff, mam nadzieję, że zrozumiecie ;-) |
|
|
10.05.2022, 14:16:20
Post
#2
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 4.05.2019 Skąd: PHP5.6 Ostrzeżenie: (0%) |
To poprawne sortowanie, ale prawdopodobnie popełniasz błąd logiczny. Nie posortujesz w poprawnej kolejności równocześnie w obu kolumnach przy różnych wartościach - zawsze kolumna bbb(druga kolumna) będzie podlegać sortowaniu względem pierwszej, ale w sposób DESC. Musisz wykonać dwa zapytania z sortowaniem dla aaa i bbb, a później połączyć wyniki w wybrany sposób. |
|
|
10.05.2022, 14:23:38
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
A nie powinieneś czasem sortować wpierw po bbb skoro chcesz pokazać najpierw rekordy z największą ilością wyświetleń?
-------------------- |
|
|
10.05.2022, 15:04:53
Post
#4
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 5 Dołączył: 11.02.2011 Ostrzeżenie: (0%) |
Musisz wykonać dwa zapytania z sortowaniem dla aaa i bbb, a później połączyć wyniki w wybrany sposób. Ok, ale jak to zrobić? To będzie jedno zapytanie? A nie powinieneś czasem sortować wpierw po bbb skoro chcesz pokazać najpierw rekordy z największą ilością wyświetleń? Nie da rady, bo nie wszystko ma albo wyświetlenaia, albo własciwie wypełnine pole Właśnie "łączenia" potrzebuję |
|
|
10.05.2022, 15:30:08
Post
#5
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 4.05.2019 Skąd: PHP5.6 Ostrzeżenie: (0%) |
Generalnie to czego oczekujesz jest sprzeczne z logiką, bo wyniki i tak będą różne, ale jeśli chcesz koniecznie uzyskać efekt DESC dla obu wartości, to wystarczą dwa oddzielne, proste zapytania z osobnym sortowaniem dla aaa i bbb.
A jak połączyć wyświetlanie tych wyników, to już zależy od Ciebie i konkretnego oczekiwanego rezultatu. Jeżeli chcesz wyświetlić największą `ilość wyświetleń` i największą `wartość`, to zawsze będzie to rozbicie na dwa osobne zapytania, albo będziesz musiał dodać z góry określony warunek dla wybranej `wartości`.
|
|
|
10.05.2022, 15:59:41
Post
#6
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 5 Dołączył: 11.02.2011 Ostrzeżenie: (0%) |
|
|
|
10.05.2022, 16:02:46
Post
#7
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 4.05.2019 Skąd: PHP5.6 Ostrzeżenie: (0%) |
masz na myśli to? `aaa` <= 10
Będzie hulało zgodnie dla sortowania `bbb` DESC (tzn. nie będzie w kolejności, której prawdopodobnie błędnie oczekujesz) Ten post edytował phpuser88 10.05.2022, 16:08:07 |
|
|
11.05.2022, 12:50:25
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Pokaż kilka przykładowych rekordów i jaki wynik chciałbyś uzyskać.
-------------------- |
|
|
11.05.2022, 15:33:50
Post
#9
|
|
Grupa: Zarejestrowani Postów: 650 Pomógł: 16 Dołączył: 5.07.2010 Skąd: Ściśle Tajne Ostrzeżenie: (0%) |
możesz jeszcze sumować dwa pola i wyświetlać po sumie tych pól
-------------------- Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście |
|
|
19.05.2022, 09:46:51
Post
#10
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 5 Dołączył: 11.02.2011 Ostrzeżenie: (0%) |
"Po prostu" wyniki, które są zwrócone w kolejności od najwiekszej liczby wyświetleń (AAA) chcę dodatkowo posortować po zawartości pola BBB.
Jeżeli dla najwyższej wartości AAA (najwięcej wyświetleń) wartość BBB nie jest właściwa (np. 0), to nie chcę tej tabeli widzieć na początku. Powinna być dopiero po wyświetlaniu wszystkich wierszy z BBB == 1, które się wyświetlają w kolejności od najwyższej liczby wyświetleń |
|
|
19.05.2022, 09:51:41
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
A jeśli BBB=1000, a AAA=1, to gdzie ma się znaleźć rekord?
-------------------- |
|
|
19.05.2022, 09:57:53
Post
#12
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 5 Dołączył: 11.02.2011 Ostrzeżenie: (0%) |
BBB to 0 lub 1
Najpierw wyświetlam te z BBB == 1 (w kolejności od najwekszej liczby wyświetleń AAA) a później te z BBB == 0 (w kolejności od najwekszej liczby wyświetleń AAA) |
|
|
19.05.2022, 10:05:01
Post
#13
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Pisałem o tym w poście #3.
Najpierw sortowanie po polu BBB, potem po polu AAA. -------------------- |
|
|
19.05.2022, 10:46:18
Post
#14
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 5 Dołączył: 11.02.2011 Ostrzeżenie: (0%) |
Dzięki za pomoc.
Mój błąd: pole BBB moze mieć więcej wartości, a ja potrzebuję warunek gdy jest większe od 0 (a może gdy niepuste) |
|
|
19.05.2022, 10:51:16
Post
#15
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
To dodatkowo warunek na BBB>0, czy też COALESCE(BBB,0)>0
-------------------- |
|
|
19.05.2022, 11:06:34
Post
#16
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 5 Dołączył: 11.02.2011 Ostrzeżenie: (0%) |
COALESCE(BBB, 0) > 0 desc, AAA desc Bardzo dziękuję za pomoc! |
|
|
19.05.2022, 11:08:52
Post
#17
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Sprawdź dobrze, czy dokładnie o to Ci chodziło, bo:
to nie to samo co:
-------------------- |
|
|
19.05.2022, 11:20:05
Post
#18
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 5 Dołączył: 11.02.2011 Ostrzeżenie: (0%) |
Teraz wynik mam OK, ale dzięki, sprawdzę z ciekawości.
WHERE ma swoje warunki, może się nie udać ;-) |
|
|
Wersja Lo-Fi | Aktualny czas: 28.04.2024 - 19:52 |