![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 26.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam, to mój pierwszy post tutaj, choć już od dawna tu zaglądam i sporo się nauczyłem :-)
Jestem początkujący w bazach, więc prosze o wyrozumiałość, właśnie przerabiam skrypt z działającego na plikach na posługujący się bazą. Zetknąłem się z dziwnym problemem, otóż poniższe zapytanie wyświetla wynik zgodny z oczekiwaniami na moim lokalnym komputerze, natomiast po umieszczeniu na serwerze - wywala błąd, a gdy go wpisać w phpAdmina na tym serwerze zwraca błąd Kod #1111 - Invalid use of group function Oto feralne zapytanie.
Zgaduję, że to pewnie różnica w wersji mysql (na serwerze jest 4.0.22-standard-log) - czy ktoś mógłby poradzić, jak przerobić to zapytanie, aby zadziałało? Oczywiści `id` to klucz, `ip` to pole któremu chcę zliczyć ilośc rekordów od największej a tablica to tablica. Chcę,aby nie tylko wypisało ile rekordów przypada na każde `ip` ale i uporządkowało wyniki od największych. Ten post edytował camillos 30.06.2007, 18:55:54 |
|
|
![]()
Post
#2
|
|
Admin Techniczny Grupa: Administratorzy Postów: 2 071 Pomógł: 93 Dołączył: 5.07.2005 Skąd: Olsztyn ![]() |
a dlaczego w order by używasz count? o ile mi wiadomo to grupuje sie po polu bazy, a nie po jakiejś liczbie...
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 26.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nie ma takiego pola - chodzi mi o uporządkowanie według wyników grupowania. gdy wywalę ORDER BY dostaję
ip1 -3 ip2 -1 ip4 - 0 ip5 -2 a chcę dostać ip1 -3 ip5 -2 ip2 -1 ip4-0 jak piszę, na domowym kompie wszystko działa idealnie. Ten post edytował camillos 30.06.2007, 19:17:00 |
|
|
![]()
Post
#4
|
|
Admin Techniczny Grupa: Administratorzy Postów: 2 071 Pomógł: 93 Dołączył: 5.07.2005 Skąd: Olsztyn ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 26.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Niestety, nic to nie daje :-(
Najbardziej zależy mi na tym, aby wyłowić `ip` z liczbą rekordów większą niż 1 (takich jest mniejszość), może dałoby się to z jakimś innym warunkiem, na razie próbowałem where count(`id`)>1, ale nie działa. Ok. już wiem, gdzieś znalazłem rozwiązanie (choć może nie do końca je rozumiem :-) )
Ten post edytował camillos 30.06.2007, 21:33:54 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 295 Pomógł: 7 Dołączył: 26.03.2004 Skąd: Opole Ostrzeżenie: (0%) ![]() ![]() |
Wszystko jest dobrze. Jesli uzywasz wyrazenia powinieneś nadać nowym zmiennym nazwy (aliasy). Jak zauważysz w klauzuli WHERE wolno używać tylko nazw istniejących pól w tabeli lub definicji wyrażenia (np. count(ip) ) natomiast w przypadku klauzuli GROUP i HAVING używa się aliasów.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 19:27 |