![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 18.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Potrzebuję zapytania, które do postów dopasuje liczbę przeczytań
Moje zapytanie zdaje się być dobre, lecz jednak jest coś źle (tabela "readd" została tak nazwana umyślnie) MOJE ZAPYTANIE
DANE
OCZEKIWANY EFEKT
EFEKT MOJEGO ZAPYTANIA
Będę wdzięczny za każdą pomoc ![]() Ten post edytował chmiello96 2.10.2012, 16:29:16 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
GROUP BY post_id, post_content
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Nie grupuj po post_content, jak Ci poradził mmmmmmm, bo grupowanie po kolumnach tekstowych jest dużo bardziej kosztowne niż po liczbowych.
Twoje zapytanie działa źle, ponieważ dla post_id = 2 i post_id = 3 nie istnieją rekordy w readd, w związku z czym po wykonaniu JOIN'a read_post będzie miało wartość NULL w obu przypadkach. Więc rekordy te zostaną zgrupowane razem. Rozwiązanie Twojego problemu to grupowanie po post.post_id (w Twoim przypadku - post_id, ale polecam dodawać aliasy tabel do zapytań - łatwiej się czyta). Ten post edytował sowiq 2.10.2012, 08:01:08 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 18.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
a idąc dalej
co musiałbym zrobić, żeby otrzymać do tego jeszcze liczbę komentarzy ?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
sowiq - jesteś w błędzie twierdząc, że takie zapytanie przejdzie. Owszem, w pewnych warunkach na MySQL przejdzie i czasem nawet dobre wyniki zwraca, ale zazwyczaj nie. Jest to chyba jedyna znana mi baza, która dopuszcza stosowanie kolumn w grupowaniu bez użycia ich albo w agregatach, albo w hrupowaniu. Zresztą zależy to od jednego parametru, który bodajże w ostatnich wersjach ma inną wartość domyślną. http://dev.mysql.com/doc/refman/5.1/en/ser...y_full_group_by
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@mmmmmmm, nie rozumiem o czym do mnie piszesz. Czy ja gdzieś podałem całe zapytanie? :| Podpowiedziałem tylko autorowi, żeby grupował wyniki po post_id, a nie po post_content, bo grupowanie po polu tekstowym jest pamięciowo kosztowną operacją.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 18.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
a czy umiecie mi pomóc z nowym problem ? :/
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
@mmmmmmm, nie rozumiem o czym do mnie piszesz. Czy ja gdzieś podałem całe zapytanie? :| Podpowiedziałem tylko autorowi, żeby grupował wyniki po post_id, a nie po post_content, bo grupowanie po polu tekstowym jest pamięciowo kosztowną operacją. Kazałeś mu wywalić z grupowania pole post_content. Więc w zapytaniu znajdzie się pole, które nie będzie stałą, nie będzie grupowania po nim, ani nie będzie agregatem. Dalej już znasz... a idąc dalej co musiałbym zrobić, żeby otrzymać do tego jeszcze liczbę komentarzy ?
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Kazałeś mu wywalić z grupowania pole post_content. Więc w zapytaniu znajdzie się pole, które nie będzie stałą, nie będzie grupowania po nim, ani nie będzie agregatem. Dalej już znasz... Kolego, nie spinaj się tak. Nic nikomu nie kazałem, po prostu poradziłem autorowi po jakim polu powinien grupować swoje zapytanie. Nie wiem jak Ty, ale ja staram się nie dawać gotowych rozwiązań. Otrzymanie porady na forum nie oznacza brak konieczności myślenia, nie sądzisz? Ale to już od autora zależy czy ewentualny komunikat błędu wklei do Google, czy z powrotem na forum. Dla mnie eot, bo szkoda czasu na takie dyskusje. Pozdrawiam. @mmmmmmm, przepraszam, masz rację. Dopiero do mnie dotarło, że dałeś grupowanie po post_id, post_content. Na samym początku źle przeczytałem i cały czas w zaparte myślałem, że zgrupowałeś po read_post, post_content, co dla mnie nie miało najmniejszego sensu. Oczywiście, jak napisałeś, według standardu SQL grupowanie powinno odbywać się po wszystkich kolumnach wymienionych w liście pól. Pozdrawiam. Ten post edytował sowiq 3.10.2012, 09:07:41 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 18.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
tak z ciekawości
co oznacza w sortowaniu 1 i 2 ? |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 18.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
@mmmmmmm
zapytanie działa, ale tylko, jeśli komentarzy i przeczynań jest po 1 Później wyniki są jakoś pomnożone i równe sobie np. jeśli są 2 przeczytania i 3 razy skomentowane zapytanie zwraca mi wynik 6 dla obu elementów :/ |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Ten post edytował mmmmmmm 4.10.2012, 18:49:17 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 05:12 |