Autor | Zpráva | ||
---|---|---|---|
ZP Profil * |
#1 · Zasláno: 19. 2. 2008, 19:22:47
Potřeboval bych poradit. Už značnou dobu zkouším zprovoznit tento dotaz na databázi, bohužel bez úspěchu. Hledal jsem na netu všechny možné způsoby, tady je část kódu:
$dotaz = MySQL_Query("SELECT MAX(key) AS maximum, spend FROM ".$prefix."visit_out WHERE id=".$cislo." GROUP BY id"); $get = MySQL_Fetch_Array($dotaz); $res_key = $get["maximum"]; $res_spend = $get["spend"]; Hlavním cílem je vypsat hodnoty z vyjmenovaných sloupců v dotazu pro maximální hodnotu 'key' daného 'id'. Při aplikaci mysql_error() 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 'key) AS maximum, spend FROM astro_visit_out WHERE id=2306 GROUP BY id' at line 1 A na stránce se vypisuje: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\VertrigoServ\www\PU\astro\maximum.php on line 10 ... což zřejmě nasvědčuje, že mysql_fetch_array() nedostal žádné hodnoty... Ale co s tím dotazem ? Předem všem moc díky za pomoc a rady.... |
||
Kajman_ Profil * |
#2 · Zasláno: 19. 2. 2008, 19:25:10
key je klíčové slovo, zkuste
max(`key`) |
||
ZP Profil * |
#3 · Zasláno: 19. 2. 2008, 19:29:04
Zkusil jsem upravit na následující:
$dotaz = MySQL_Query("SELECT MAX('key') AS maximum, spend FROM ".$prefix."visit_out WHERE id=".$cislo." GROUP BY id"); $get = MySQL_Fetch_Array($dotaz); $res_key = $get["maximum"]; ... echo $res_key ...ale už to aspoň nehlásí chybu... :) nevím, zda mám dobře ten alias ?! |
||
Kajman_ Profil * |
#4 · Zasláno: 19. 2. 2008, 19:32:44
Já psal o zpětných apostrofech, Vy tam máte normální uvozovky.
|
||
ZP Profil * |
#5 · Zasláno: 19. 2. 2008, 19:35:21
Aha, tak to se omlouvám...
Tak jsem to zkusil a funguje to, ne jestli se můžu ještě zeptat, používám název 'key' v každé tabulce MySQL pro automat. číslování záznamů a určování prim. klíče. Takže pokud je 'key' klíčové slovo, tak s tím budu mít problémy ? Jo a samozřejmě moc díky, už jsem byl z toho zoufalej ;) |
||
nightfish Profil |
#6 · Zasláno: 19. 2. 2008, 19:40:11
Takže pokud je 'key' klíčové slovo, tak s tím budu mít problémy ?
většinou se k tomuto používá sloupec označený id nicméně pokud budete název toho sloupce důsledně uzavírat do zpětných apostrofů (nebo jak se těm znakům vlastně říká), problém by být neměl |
||
ZP Profil * |
#7 · Zasláno: 19. 2. 2008, 19:43:11
Já používám právě 'id' jako osobní číslo uživatele ve všech tabulkách v sessions ... jsem se zatím s tímto klíč, slovem nesetkal, takže jsem to nedomyslel ... ;)
Díky oběma za rady... |
||
Joker Profil |
#8 · Zasláno: 19. 2. 2008, 20:04:22
ZP
Takže pokud je 'key' klíčové slovo, tak s tím budu mít problémy? Tohle vlákno je toho snad názornou ukázkou. |
||
Joker Profil |
#9 · Zasláno: 19. 2. 2008, 20:06:23
ZP
jsem se zatím s tímto klíč, slovem nesetkal Opravdu ne? A co vytváření tabulek? CREATE TABLE tabulka( id int auto_increment not null primary key, ... ); |
||
ZP Profil * |
#10 · Zasláno: 19. 2. 2008, 20:19:54
Opravdu ne? A co vytváření tabulek?
CREATE TABLE tabulka( id int auto_increment not null primary key, ... ); Používám PHP Admina, takže se s tím moc nesetkávám. Chytrýho ze sebe nedělám, nebojte... |
||
ZP Profil * |
#11 · Zasláno: 19. 2. 2008, 20:23:03
No, když jsme ještě u toho,
následující příkaz má vypsat vybrané slouce pro nejvyšší key, ale ... maximální 'key' se vypíše, ale ostatní sloupce se vypíší z prvního záznamu dle daného 'id'. Nevíte, kde je ještě chyba ? $dotaz = MySQL_Query("SELECT s_out, id, relation, MAX(`key`) AS maximum FROM ".$prefix."visit_out WHERE id='".$cislo."' GROUP BY id"); |
||
k Profil * |
#12 · Zasláno: 19. 2. 2008, 20:33:01
SELECT s_out, id, relation, MAX(`key`) AS maximum FROM ".$prefix."visit_out GROUP BY id LIMIT 1
|
||
k Profil * |
#13 · Zasláno: 19. 2. 2008, 20:36:11
to prvni je spatne
SELECT s_out, id, relation, `key` AS maximum FROM ".$prefix."visit_out ORDER BY `key` DESC LIMIT 1 |
||
XY Profil * |
#14 · Zasláno: 19. 2. 2008, 20:38:25
SELECT s_out, id, relation, MAX(`key`) AS maximum FROM ".$prefix."visit_out GROUP BY id LIMIT 1
To nelze, není vybráno dané id, potřebuji, aby se mi pro vybrané maximální key vložily hodnoty ze stejného záznamu tabulky. |
||
ZP Profil * |
#15 · Zasláno: 19. 2. 2008, 20:39:56
V té druhé možnosti přeci také není uvedeno WHERE ? Hledám maximum z key pro dané id ;)
|
||
k Profil * |
#16 · Zasláno: 19. 2. 2008, 20:41:34
v tom pripade nechapu toto: ??
maximální 'key' se vypíše, ale ostatní sloupce se vypíší z prvního záznamu dle daného 'id' |
||
ZP Profil * |
#17 · Zasláno: 19. 2. 2008, 20:46:53
Příkaz vyhledá všechny záznamy, kde je id rovno např. 10. A poté z těchto záznamů vybere maximální hodnotu. A já potřebuji, aby to vypsano hodnoty právě z tohoto záznamu /řádku tabulky.
|
||
k Profil * |
#18 · Zasláno: 19. 2. 2008, 20:49:05
uff
uz to chapu.. SELECT s_out, id, relation, `key` AS maximum FROM ".$prefix."visit_out WHERE id = $cislo ORDER BY `key` DESC LIMIT 1 |
||
ZP Profil * |
#19 · Zasláno: 19. 2. 2008, 20:52:43
SELECT s_out, id, relation, `key` AS maximum FROM ".$prefix."visit_out WHERE id = $cislo ORDER BY `key` DESC LIMIT 1
Chyba: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clauseKey: Tam zřejmě musí být GROUP BY (teda co jsem pochytil z jiných zdrojů...) |
||
k Profil * |
#20 · Zasláno: 19. 2. 2008, 20:56:33
asi tak
|
||
ZP Profil * |
#21 · Zasláno: 19. 2. 2008, 20:58:32
asi tak
Problém ovšem nastane, když to tam doplním, tak to vypisuje chybu a nic se nepředává mysql_fetch_array(). |
||
k Profil * |
#22 · Zasláno: 19. 2. 2008, 21:04:36
ehm zkus sem napsat chybu,co to pise a ten select co tam posilas.
|
||
ZP Profil * |
#23 · Zasláno: 19. 2. 2008, 21:09:28
Tak pokud odesílám toto:
$dotaz = MySQL_Query("SELECT s_out, id, relation, MAX(`key`) AS maximum FROM ".$prefix."visit_out WHERE id = $cislo ORDER BY `key` DESC LIMIT 1"); Dostávám hlášení, spolu s mysql_error(): Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\VertrigoServ\www\PU\astro\maximum.php on line 12 Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clauseKey: A pokud odesílám toto: $dotaz = MySQL_Query("SELECT s_out, id, relation, MAX(`key`) AS maximum FROM ".$prefix."visit_out WHERE id = $cislo ORDER BY `key` DESC LIMIT 1 GROUP BY id"); Vrací se: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\VertrigoServ\www\PU\astro\maximum.php on line 13 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 'GROUP BY id' at line 2Key: |
||
k Profil * |
#24 · Zasláno: 19. 2. 2008, 21:10:30
SELECT s_out, id, relation, `key` AS maximum FROM ".$prefix."visit_out WHERE id = $cislo ORDER BY `key` DESC GROUP BY id LIMIT 1
|
||
ZP Profil * |
#25 · Zasláno: 19. 2. 2008, 21:12:51
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\VertrigoServ\www\PU\astro\maximum.php on line 13 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 'GROUP BY id LIMIT 1' at line 2Key: Bohužel, nejde to... |
||
k Profil * |
#26 · Zasláno: 19. 2. 2008, 21:17:10
SELECT s_out, id, relation, `key` AS maximum FROM ".$prefix."visit_out WHERE id = $cislo GROUP BY id ORDER BY `key` DESC LIMIT 1
jinak uz vazne nevim |
||
Casero Profil |
#27 · Zasláno: 19. 2. 2008, 21:17:19
k
Pouze špatné pořadí. SELECT s_out, id, relation, `key` AS maximum FROM ".$prefix."visit_out WHERE id = $cislo GROUP BY id ORDER BY `key` DESC LIMIT 1 |
||
ZP Profil * |
#28 · Zasláno: 19. 2. 2008, 21:19:50
No, to už je lepší, chybu to nehlásí, ovšem dostali jsme se tam, kde jsme už byli, vypisuje to zas ten první záznam daného 'ID' (tedy jako předtím)...
S tím order nevím, to tam snad nemusí být, ne ? Na co řadit... ? Nebo nějako závorkovat ty vybrané sloupce ? |
||
ZP Profil * |
#29 · Zasláno: 19. 2. 2008, 21:20:58
k
Pouze špatné pořadí. SELECT s_out, id, relation, `key` AS maximum FROM ".$prefix."visit_out WHERE id = $cislo GROUP BY id ORDER BY `key` DESC LIMIT 1 A rozdíl... ? ;) |
||
Casero Profil |
#30 · Zasláno: 19. 2. 2008, 21:25:39
ZP
A rozdíl... ? ;) Zkus použít hlavu a mrkni na čas. ;) Jinak je to nesmysl. Taháš data s určitým id (klauzule where) a potom to groupuješ pomocí id, tzn, vždy budeš mít jen jeden vysledek....co teda chceš?... |
||
Téma pokračuje na další straně.
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0