![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 651 Pomógł: 116 Dołączył: 3.06.2012 Skąd: Lędziny Ostrzeżenie: (0%) ![]() ![]() |
Mam taką tabelę:
Cytat |id|view_post|field_order I teraz, zakładając że w polu view_post jest liczba z przedziału 1-3, to: jak przy takim zapytaniu:
Można policzyć od razu i zapisać do zmiennej ilość view_post równej 1, równej 2 oraz równej 3? Myślałem żeby coś z having pokombinować, ale nie bardzo mi to wychodzi :/ |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
zwróci: Kod view_post | ilosc
1 | 13 2 | 142 3 | 45 ... itd ... -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 651 Pomógł: 116 Dołączył: 3.06.2012 Skąd: Lędziny Ostrzeżenie: (0%) ![]() ![]() |
Tak, tylko że ja chcę efekt taki:
view_post = 1: field_order = 1 field_order = 3 field_order = 5 view_post = 2: field_order = 2 field_order = 4 field_order = 6 Po prostu te liczby z przedziału 1-3 to są grupy, a w tych grupach musze mieć poukładane wszystko zgodnie z field_order, a dodatkowo chcę znać liczbę wszystkich view_post'ów dla cyfr 1, 2 i 3. Obecnie Twój kod ignoruje zupełnie field_order. Ten post edytował Michael2318 7.02.2013, 09:04:02 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ehh jednym zapytaniem się nie da tego ogarnąć (znaczy da się ale to nie ma sensu większego...).
Pamiętaj, że zapytanie SQL zwraca wiersze wyników - jeśli napiszesz mi kilka przykładowych wierszy zwróconych przez takie zapytanie jakiego szukasz to Ci je napisze. -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 651 Pomógł: 116 Dołączył: 3.06.2012 Skąd: Lędziny Ostrzeżenie: (0%) ![]() ![]() |
Załóżmy, że w bazie mam 6 rekordów, dwa są w grupie (view_posts) 1, dwa w grupie 2 i dwa w grupie 3:
Cytat | ID | view_posts | field_order |
| X | 1 | 2 | | X | 1 | 4 | | X | 2 | 1 | | X | 2 | 3 | | X | 3 | 5 | | X | 3 | 6 | |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ale to jest zawartość tabeli czy tak mają wyglądać wyniki zapytania? Bo to mi wygląda na bardziej na zawartość tabelki lub ewentualnie wyniki zapytania Twojego tego podstawowego.
Ogólnie: Chcesz naraz otrzymać liczbę wierszy i te wiersze w kolejności po podanym przez Ciebie polu. Albo podziel to na dwa zapytania:
lub zostań przy tym pierwszym i policz wiersze w tabeli wynikowej w PHP po prostu. Gdybyś chciał albo liczbę wyników albo same wyniki nie było by problemu ale jak chcesz i jedno i drugie to z braku laku nawet możesz pobrać wszystko tym zapytaniem pierwszym Swoim, wrzucić wyniki do jakiejś tablicy, przejechać po niej i policzyć wiersze a potem je ładnie wyświetlić. W najgorszym (najmniej wydajnym chyba jednak podejściu) możesz dodać do swojego zapytania 3 joiny, które dodadzą liczbę wyników dla danego post_view do każdego wiersza wyniku... ale ja to stanowczo odradzam:
uzyskasz przykładowo coś takiego: Kod id | view_post | size1 | size2 | size3 1 | 1 | 2 | 3 | 4 2 | 1 | 2 | 3 | 4 3 | 2 | 2 | 3 | 4 ... itd ... Zamiast JOIN możesz też użyć podzapytań... Lecz czy tak czy inaczej - to są antywzorce i tak się robić nie powinno ![]() EDIT: błąd w zapytanku ![]() Ten post edytował Sephirus 7.02.2013, 09:48:31 -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 651 Pomógł: 116 Dołączył: 3.06.2012 Skąd: Lędziny Ostrzeżenie: (0%) ![]() ![]() |
A może da się wyciągnąć największy field_order dla danej kategorii jednym zapytaniem? W powyższym zapytaniu będzie to field_order, rekordy 2, 4 i 6.
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat A może da się wyciągnąć największy field_order dla danej kategorii jednym zapytaniem? Da się. Cytat W powyższym zapytaniu będzie to field_order, rekordy 2, 4 i 6. Nie kumam. ![]()
-------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 651 Pomógł: 116 Dołączył: 3.06.2012 Skąd: Lędziny Ostrzeżenie: (0%) ![]() ![]() |
To jest chyba to o co mi chodzi tylko czy da się do tego znowu podpiąć to nieszczęsne sortowanie w grupach przez pole field_order?
EDIT: Nie rozumiem czemu to zapytanie:
Zwraca tylko 3 rekordy, skoro mam ich 6? Co prawda max_field_order'ów jest rzeczywiście tylko 3, ale ja potrzebuję wszystkie rekordy. Ten post edytował Michael2318 7.02.2013, 10:09:47 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
No w tym sęk właśnie, że jeśli coś grupujesz to pojawia się tylko jeden rekord dla danej wartości. Jeśli grupujesz po view_post przykładowo to dla każdej różnej wartości view_post dostaniesz po jednym rekordzie - innymi słowy przy GROUP BY nie pojawi się dwa razy ta sama wartość view_post
![]() -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 651 Pomógł: 116 Dołączył: 3.06.2012 Skąd: Lędziny Ostrzeżenie: (0%) ![]() ![]() |
Ahm. Próbowałem użyć tego zapytania dla testów:
Ale zwraca: #1052 - Column 'view_post' in order clause is ambiguous ![]() |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
my bad - daj teraz EDIT: ale naprawdę nie stosuj tego - już lepiej przerobić wynik prostszego zapytania czy dwóch w PHP. Ten post edytował Sephirus 7.02.2013, 10:25:54 -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 651 Pomógł: 116 Dołączył: 3.06.2012 Skąd: Lędziny Ostrzeżenie: (0%) ![]() ![]() |
To zapytanie i tak zwraca tylko jeden rekord i na dodatek w trzech przypadkach (size 1, 2 i 3) jest liczba 48.
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Racja - zapomniałem o GROUP BY
-------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 29.04.2025 - 06:42 |