Autor | Zpráva | ||
---|---|---|---|
Alphard Profil |
#1 · Zasláno: 16. 8. 2008, 19:03:02
ou, chyba je asi tam, kde jsem si myslel, ale nechal jsem se zmást vaší původní chybou
$row = $db->sql_fetchrow($result); tohle můžete zjistit jen vy, ale budu-li přepokládat, že tato metoda je analogická k fci mysql_fetch_row() tak musí fungovat toto: $result =$db->sql_query("SELECT AVG(zmena) FROM (SELECT zmena FROM ".$tabulka." WHERE idnum='$idnum' ORDER BY id DESC LIMIT 5) AS nzmena WHERE zmena<0"); $row = $db->sql_fetchrow($result); $zmena = $row[0]; a nepište, že to nejde :-) |
||
houbeless Profil |
#2 · Zasláno: 17. 8. 2008, 15:00:56
teda nevim, nevim co mi vrátí toto: $zmena = $row[0];
tohle snad ani testovat nebudu, o: $db mi nic nevrátí, ... nechtěl jste nepsat $zmena = $row[nzmena]; ?? v tom případě jsme se nikam neposunuli... Jinak jestli to mám chápat jako snahu vrátit počet záznamů z dotazu, tak bych musel použít sql_numrows($result); a to mi přes $db v této kombinaci dotazu nepůjde; co vím, tak to je stavěný na COUNT...takže tudy cesta nevede... |
||
Kajman_ Profil * |
#3 · Zasláno: 17. 8. 2008, 20:36:58
houbeless
Na možnou chybu jste byl upozorněn už v příspěvku č. 8. Stačí přidat alias za avg (nzmena je alias poddotazu a ne výsledného sloupečku!). $result =mysql_query($q="SELECT AVG(zmena) prumer FROM (SELECT zmena FROM ".$tabulka." WHERE idnum='$idnum' ORDER BY id DESC LIMIT 5) AS nzmena WHERE zmena<0") or die ($q.": ".mysql_error()); if($row = $mysql_fetch_row($result)) print_r($row); Pokud bude výsledek existovat, ale bude prázný (v db hodnota null), tak v posledních pěti záznamech k danému idnum není žádná záporná hodnota, takže se průměr nemá z čeho spočítat. |
||
houbeless Profil |
#4 · Zasláno: 17. 8. 2008, 22:43:50
No sláva, konečně z vás vypadlo něco užitečného na co jsem se ptal a to způsob použití chybové hlašky, ze které se něco dozvim, pre klas. použití mi nic nevypsalo..
Použití AVG(zmena) prumer nefunguje, jak jsem již říkal, přičemž je samozřejmné, že v posledních 5 záznamech je alespon 1 záporná hodnota! Chybové hlášení tedy: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE isin='NL0006033375' ORDER BY id DESC LIMIT 5) WHERE modify<0' at line 1 tedy moje mysql nepodporuje tento syntax (je zvláštní, že phpA na něm ano), přičemž moje verze MySQL je: 5.0.41-community-nt; # Verze protokolu: 10 Pokud vím, měla by podporovat subselecty, ale toto bude zřejmě trochu jiný problém... |
||
Kajman_ Profil * |
#5 · Zasláno: 17. 8. 2008, 22:58:07
No sláva, konečně z vás vypadlo něco užitečného na co jsem se ptal a to způsob použití chybové hlašky
Použijí je ve FAQ! Tvrdil jste, ze mysql_error Vám nevypíše nic a svůj kód, jak ho vypisujete jste sem stále odmítal poslat! Když máte několik chyb ve skriptu, tak se nedivte, že je nikdo všechny nevyčte z křišťálovké koule. Chyba bude nejspíš těsně před tím where. Nevypsal jsem tam to $q? Tipnul bych, že tam nemáte nastavenou tu tabulku. |
||
houbeless Profil |
#6 · Zasláno: 17. 8. 2008, 23:28:34
..Stačilo by dobře číst: už 11.8 jsem se ptal, jak mám použít mysql_error, protože způsob, jak jsem ho použil já, mi žádnou hlášku(užitečnou) nevrátil!
- Způsob použití dotazu ve skriptu považuji za zbytečnou informaci, která k řešení nespěje... Ta chybová hlaška je skutečně moje chyba, pre jsem přepsal alias jmena tabulky a přehlédl se, díky za upozornění ;) Takže váš návrh: AVG(zmena) prumer; vrací poměrně předpokladatelně chybu: Every derived table must have its own alias. A to i v podobě AVG(zmena) AS prumer. Tedy pokud zapíšu jak jsem řekl, že funguje i v phpA: AVG(zmena) FROM (SELECT....) AS prumer WHERE... dotaz projde bez chybové hlášky, ale nevrátí žádnou hodnotu, takže jsme tam kde jsme byli. (Ale aspon jsem se naučil jiné použití m_erroru...) |
||
Kajman_ Profil * |
#7 · Zasláno: 18. 8. 2008, 07:46:12
Every derived table must have its own alias. A to i v podobě AVG(zmena) AS prumer.
Nemáte alias za poddotazem. V našem selectu byl "DESC LIMIT 5) AS nzmena WHERE" ale ve Vašem jste ho z nějakého důvodu vypustil "ORDER BY id DESC LIMIT 5) WHERE modify<0'". projde bez chybové hlášky, ale nevrátí žádnou hodnotu Pokud vrátí jeden řádek s práznou hodnotou, tak v posledních pěti záznamech k danému idnum není žádná záporná hodnota, takže se průměr nemá z čeho spočítat. On jestli nebude největší problém mezi židlí a klávesnicí ;-) |
||
houbeless Profil |
#8 · Zasláno: 18. 8. 2008, 15:17:29
„On jestli nebude největší problém mezi židlí a klávesnicí ;-)“
Taky mám ten dojem, akorát ne ve vztahu k sobě ;) „Nemáte alias za poddotazem. V našem selectu byl "DESC LIMIT 5) AS nzmena WHERE" je poměrně zoufalá připomínka - hlavně že jsem na to už dříve upozorňoval... „[i]Pokud vrátí jeden řádek s práznou hodnotou, tak v posledních pěti záznamech k danému idnum není žádná záporná hodnota, takže se průměr nemá z čeho spočítat.“ - Nevim jestli jde o provokaci, nebo natvrdlost, ale musím se opakovat, vždy jsou v tab. přítomné nějaké záporné hodnoty! A pokud to potřebuju ověřit, tak při dotazu bez subselectu a tedy s pouhým výpisem (bez průměrování) mě momentálně dotaz vrátí 4 záporná čísla... Problém bude asi někde jinde....nacož zde, jak se zdá, nikdo neumí odpovědět. |
||
nightfish Profil |
#9 · Zasláno: 18. 8. 2008, 15:46:48
houbeless
„No sláva, konečně z vás vypadlo něco užitečného na co jsem se ptal a to způsob použití chybové hlašky, ze které se něco dozvim, pre klas. použití mi nic nevypsalo.. “ pakliže neumíte zjistit chybu z databázového objektu, který používáte ($db), tak bude lepší použít klasický procedurální přístup... co tady tedy postrádám? vypsání chybové hlášky (mysql_error()), včetně kompletního dotazu tak, jak jej posíláte do databáze (jak to udělat je uvedeno v již zmíněném FAQ) jinak chcete-li nadále vést konverzaci dosavadním způsobem, vlákno vám zamknu |
||
Kajman_ Profil * |
#10 · Zasláno: 18. 8. 2008, 16:19:43
jinak chcete-li nadále vést konverzaci dosavadním způsobem, vlákno vám zamknu
Omlouvám se, už nebudu v tomhle vláknu zlobit :-) |
||
nightfish Profil |
#11 · Zasláno: 18. 8. 2008, 16:27:23
Kajman_
„Omlouvám se, už nebudu v tomhle vláknu zlobit :-)“ "chcete-li" bylo zamýšleno jako vykání houbelessovi |
||
houbeless Profil |
#12 · Zasláno: 18. 8. 2008, 17:52:28
nene, končim v diskuzi, vídím, že to nemá smysl...
|
||
nightfish Profil |
#13 · Zasláno: 18. 8. 2008, 18:23:00
houbeless
„nene, končim v diskuzi, vídím, že to nemá smysl...“ vaše přání je mi rozkazem, zamykám |
||
Časová prodleva: 16 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0