php11
10.05.2022, 13:44:49
Cześć,
sortuję wyniki zapytania po dwóch kolumnach:
ORDER BY aaa DESC, bbb DESC;
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 ;-)
phpuser88
10.05.2022, 14:16:20
ORDER BY aaa DESC, bbb DESC;
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.
trueblue
10.05.2022, 14:23:38
A nie powinieneś czasem sortować wpierw po bbb skoro chcesz pokazać najpierw rekordy z największą ilością wyświetleń?
php11
10.05.2022, 15:04:53
Cytat(phpuser88 @ 10.05.2022, 15:16:20 )

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?
Cytat(trueblue @ 10.05.2022, 15:23:38 )

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ę
phpuser88
10.05.2022, 15:30:08
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.
ORDER BY aaa DESC
ORDER BY bbb DESC
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`.
SELECT * FROM `x` where `aaa`=10 ORDER BY `bbb` DESC
php11
10.05.2022, 15:59:41
Cytat(phpuser88 @ 10.05.2022, 16:30:08 )

SELECT * FROM `x` where `aaa`=10 ORDER BY `bbb` DESC
A czy można ustawić MAX JAKOŚ dla where `aaa` ?
A potem ORDER BY `bbb` DESC
Będzie to hulało?
phpuser88
10.05.2022, 16:02:46
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)
trueblue
11.05.2022, 12:50:25
Pokaż kilka przykładowych rekordów i jaki wynik chciałbyś uzyskać.
Johnas
11.05.2022, 15:33:50
możesz jeszcze sumować dwa pola i wyświetlać po sumie tych pól
php11
19.05.2022, 09:46:51
"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ń
trueblue
19.05.2022, 09:51:41
A jeśli BBB=1000, a AAA=1, to gdzie ma się znaleźć rekord?
php11
19.05.2022, 09:57:53
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)
trueblue
19.05.2022, 10:05:01
Pisałem o tym w poście #3.
Najpierw sortowanie po polu BBB, potem po polu AAA.
php11
19.05.2022, 10:46:18
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)
trueblue
19.05.2022, 10:51:16
To dodatkowo warunek na BBB>0, czy też COALESCE(BBB,0)>0
php11
19.05.2022, 11:06:34
COALESCE(BBB, 0) > 0 desc, AAA desc
Bardzo dziękuję za pomoc!
trueblue
19.05.2022, 11:08:52
Sprawdź dobrze, czy dokładnie o to Ci chodziło, bo:
ORDER BY COALESCE(BBB, 0) > 0 DESC, AAA DESC
to nie to samo co:
WHERE COALESCE(BBB, 0) > 0
ORDER BY BBB DESC, AAA DESC
php11
19.05.2022, 11:20:05
Teraz wynik mam OK, ale dzięki, sprawdzę z ciekawości.
WHERE ma swoje warunki, może się nie udać ;-)
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.