« 1 2 »
Autor Zpráva
ZP
Profil *
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()
dostávám pokaždé hlášku:
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 *
key je klíčové slovo, zkuste
max(`key`)
ZP
Profil *
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
=> 'key'

...ale už to aspoň nehlásí chybu... :) nevím, zda mám dobře ten alias ?!
Kajman_
Profil *
Já psal o zpětných apostrofech, Vy tam máte normální uvozovky.
ZP
Profil *
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
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 *
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
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
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 *
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 *
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 *
SELECT s_out, id, relation, MAX(`key`) AS maximum FROM ".$prefix."visit_out GROUP BY id LIMIT 1
k
Profil *
to prvni je spatne
SELECT s_out, id, relation, `key` AS maximum FROM ".$prefix."visit_out ORDER BY `key` DESC LIMIT 1
XY
Profil *
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 *
V té druhé možnosti přeci také není uvedeno WHERE ? Hledám maximum z key pro dané id ;)
k
Profil *
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 *
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 *
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 *
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 *
asi tak
ZP
Profil *
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 *
ehm zkus sem napsat chybu,co to pise a ten select co tam posilas.
ZP
Profil *
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 *
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 *
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 *
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
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 *
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 *
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
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š?...
« 1 2 »
Toto téma je uzamčeno. Odpověď nelze zaslat.