Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nie dziala sumowanie
Forum PHP.pl > Forum > Bazy danych > MySQL
di@blo
Mam 2 problemy:

Pierwszy to taki ze mam zapytanie a w nim funkcjes SUM ktora ma mi zliczyc wartosci w kolumnie Przyjalem wariant wszedzie przedstawiany

  1. SELECT SUM(kolumna) AS suma FROM tabela


i wyskrobalem cos takiego

  1. mysql_query("SELECT odp, ilosc, SUM(ilosc) AS suma FROM $odpowiedzi") OR die(mysql_error());


niestety wywala mi blad "Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause"
Niby po dodaniu GROUP BY odp dziala ale zalezy mi na jak najwiekzej poprawnosci kodu Pozatym wyswietla w kolejnosci alfabetycznej a nie w takiej jak dodano do bazy

Drugi to problem z zapytaniem

  1. .
  2. mysql_query("SELECT pytanie, odpowiedzi FROM sonda WHERE id = (SELECT wartosc FROM ustawienia WHERE ust = 'sonda') ")
  3. .


Wywala blad "Something is wrong in your syntax obok 'sonda' )'' w linii 1" Probuje roznych kombinacji cudzysloow i komunikat sie zmienia ale ogolnie o to samo zgasza blad a Jak rozbije to na 2 zapytania dziala ok

Z gory dziekuje za pomoc
JoShiMa
No przecież masz odpowiedź:
Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause

Założę się, że jak zapiszesz:
  1. mysql_query("SELECT SUM(ilosc) AS suma FROM $odpowiedzi") OR die(mysql_error());

to zadziała.

A tak zadziała?
  1. mysql_query("SELECT pytanie, odpowiedzi FROM sonda WHERE id IN (SELECT wartosc FROM ustawienia WHERE ust = 'sonda') ")
di@blo
co do
  1. .
  2. mysql_query("SELECT pytanie, odpowiedzi FROM sonda WHERE id IN (SELECT wartosc FROM ustawienia WHERE ust = 'sonda') ");
  3. .

rezultat jest taki "Something is wrong in your syntax obok 'SELECT wartosc FROM ustawienia WHERE ust = 'sonda')' w linii 1"

a co do
  1. mysql_query("SELECT SUM(ilosc) AS suma FROM $odpowiedzi") OR die(mysql_error());

jak najbardziej dziala ale jak dorzuce ine kolumy to sie wysypuje
  1. mysql_query("SELECT odp, ilosc, SUM(ilosc) AS suma FROM $odpowiedzi")

ten sam blad co na poczatku

mam jeszcze jedno pytanko czy da sie zrobic autoinkrementacje pola?
  1. mysql_query("UPDATE $sonda SET ilosc=ilosc+1 WHERE odp='$odp' ")

cos w tym stylu tylko zamiast ilosc=ilosc+1 cos co by incrementowalo wartosc tej kolumny
JoShiMa
Przecież masz czarno na białym napisane że połączenie SUM z innymi typami kolumn "is illegal' no tak trudno zrozumieć, że nie wolno? Co do drugiego problemu to upewnij się, czy masz prawidłowo wpisane wartości tabel i kolumn, oraz, że podzapytanie nie zwraca przypadkiem NULL.



Cytat(di@blo @ 2.04.2008, 18:06:18 ) *
mam jeszcze jedno pytanko czy da sie zrobic autoinkrementacje pola?
  1. mysql_query("UPDATE $sonda SET ilosc=ilosc+1 WHERE odp='$odp' ")

cos w tym stylu tylko zamiast ilosc=ilosc+1 cos co by incrementowalo wartosc tej kolumny

Tak, w tabeli trzeba ustawić że to pole ma mieć autoinkrementację, wtedy nie ustawiasz jego wartości w zapytaniu tylko zamo się ustawia na kolejną wartość.

Teraz ja z kolei mam pytanie. Zaglądałeś w ogóle do jakiegokolwiek kursu SQLa albo do manuala? Bo zadajesz tak podstawowe pytania, że to aż boli.
di@blo
Po pierwsze wystarczylo napisac ze sum() nie moze wystepowac z innymi polami a w zadnym kursie sie tego nie doszukalem Nie zadaje pytan tutaj bo nie chce mi sie szukac

Co do podzapytania to juz dawno sprawdzilem to. Jak calosc podziele na 2 zapyatnia
  1. mysql_query("SELECT wartosc FROM ustawienia WHERE ust = 'sonda' ") OR die(mysql_error());
  2. mysql_query("SELECT pytanie, odpowiedzi FROM sonda WHERE id='$sond'") OR die (mysql_error());

dziala bez zarztu

a co o inkrementacji to nie jestem az tak tepy zeby tego nie wiedziec ze da sie ustawic autoinkrementacje, moze nie o konca dobrze sie wyrazilem Potrzebuje takiego rozwiazania zeby po sprawdzeniu warunku zwiekszalo licznik w odpowiednim polu o jeden
JoShiMa
Cytat(di@blo @ 2.04.2008, 18:25:56 ) *
Po pierwsze wystarczylo napisac ze sum() nie moze wystepowac z innymi polami a w zadnym kursie sie tego nie doszukalem Nie zadaje pytan tutaj bo nie chce mi sie szukac

Co do podzapytania to juz dawno sprawdzilem to. Jak calosc podziele na 2 zapyatnia
  1. mysql_query("SELECT wartosc FROM ustawienia WHERE ust = 'sonda' ") OR die(mysql_error());
  2. mysql_query("SELECT pytanie, odpowiedzi FROM sonda WHERE id='$sond'") OR die (mysql_error());

dziala bez zarztu

a co o inkrementacji to nie jestem az tak tepy zeby tego nie wiedziec ze da sie ustawic autoinkrementacje, moze nie o konca dobrze sie wyrazilem Potrzebuje takiego rozwiazania zeby po sprawdzeniu warunku zwiekszalo licznik w odpowiednim polu o jeden


A ile rekordów zwraca Ci to pierwsze zapytanie?
di@blo
Mam cos takiego

  1. $wykonaj3 = mysql_query("SELECT wartosc FROM ustawienia WHERE ust = 'sonda' ") OR die(mysql_error());
  2. $tab3 = mysql_fetch_array($wykonaj3);
  3.  
  4. $wykonaj = mysql_query("SELECT pytanie, odpowiedzi FROM sonda WHERE id='$tab3[0]' ") OR die (mysql_error());
  5. while($tab = mysql_fetch_array($wykonaj))
  6. {
  7. $pytanie = $tab['pytanie'];
  8. $odpowiedzi = 'sond_'.$tab['odpowiedzi'];
  9. }


Sprawdzilem to pierwsze zwraca tylko 1 rekord
woj_tas
Po pierwsze.

Czy tu:
Cytat
Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause

pisze, że nie można łączyć SUM z innymi kolumnami questionmark.gif Nie. Można łączyć, ale należy pogrupować (GROUP BY)

Cytat(JoShiMa @ 2.04.2008, 18:12:25 ) *
Tak, w tabeli trzeba ustawić że to pole ma mieć autoinkrementację, wtedy nie ustawiasz jego wartości w zapytaniu tylko zamo się ustawia na kolejną wartość.

Klucz główny o którym piszesz inkrementuje się podczas dodawania nowych wartosci a nie modyfikacji

Cytat(JoShiMa @ 2.04.2008, 18:12:25 ) *
Teraz ja z kolei mam pytanie. Zaglądałeś w ogóle do jakiegokolwiek kursu SQLa albo do manuala? Bo zadajesz tak podstawowe pytania, że to aż boli.


@JoShiMa: no więc jak jest z tym kursem?
di@blo
Co do pierwszego to zrobilem grupowanie po Id co nie wplywa na kolejnosc

Co do inkrementacji to sie mylisz to co wkleilem dziala
  1. mysql_query("UPDATE $sonda SET ilosc=ilosc+1 WHERE odp='$odp' ") ;

Poszukalem troche jeszcze i znalazlem identyczne rozwiazanie co sklonilo mnie do szukania bledu u siebie i znalazlem teraz wszystko smiga jak nalezy

Co do kursow to przeszukiwalem pod katem znalezienia konkretnej odpowiedzi a nie czytania calosci To jak czytanie calej encyklopedi zeby znalesc wiadomosci na temat jednego hasla

Poswiecilem sie i poszukalem stronki z ktorych korzystalem (bylo wiecej ale nie chce mi sie wszystkich szukac)
http://www.w3schools.com/sql/func_sum.asp
http://dev.mysql.com/doc/refman/5.0/en/gro...ml#function_sum

Najpierw sam probuje rozwiazac jak nie umiem szukam jak nie znajduje pytam

JoShiMa zajrzyj sobie nawet w manualu nie ma nic o mieszaniu sum() z innymi polami dlatego nie rozumialem o co chodzi Sam sobie lepiej poradzilem, a ty nie rozumiesz pytan a nazywasz je podstawowymi problemami

Dalej nie rozwiazalem problemu
  1. .
  2. mysql_query("SELECT pytanie, odpowiedzi FROM sonda WHERE id = (SELECT wartosc FROM ustawienia WHERE ust = 'sonda') ");
  3. .


ale bede szukal bledu tongue.gif
woj_tas
Cytat(di@blo @ 2.04.2008, 20:39:33 ) *
Dalej nie rozwiazalem problemu
  1. .
  2. mysql_query("SELECT pytanie, odpowiedzi FROM sonda WHERE id = (SELECT wartosc FROM ustawienia WHERE ust = 'sonda') ");
  3. .

ale bede szukal bledu tongue.gif


A jaki wynik otrzymujesz? Błąd czy złe wartości? Zapytanie wydaje sie poprawne. Najlepiej pokaż cała strukturę tabel sondy.
JoShiMa
Cytat(woj_tas @ 2.04.2008, 20:18:56 ) *
@JoShiMa: no więc jak jest z tym kursem?

Mam nadzieję, że nie masz na myśli kursu konwersacji, bo co innego znajomość SQL a co innego próba zrozumienia czyjegoś problemu. No ale nie róbmy
OT.

Cytat(woj_tas @ 2.04.2008, 21:01:47 ) *
A jaki wynik otrzymujesz? Błąd czy złe wartości? Zapytanie wydaje sie poprawne. Najlepiej pokaż cała strukturę tabel sondy.


No to co z tym kursem? Tym razem na spostrzegawczość;)

Cytat
"Something is wrong in your syntax obok 'SELECT wartosc FROM ustawienia WHERE ust = 'sonda')' w linii 1"
di@blo
Jak wyzej blad
"Something is wrong in your syntax obok 'SELECT wartosc FROM ustawienia WHERE ust = 'sonda')' w linii 1"
jak to samo zapyanie zlozone rozbije na 2 proste to jest ok i dziala
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.