Autor Zpráva
Tomanuel
Profil *
Ahoj, mám tento dotaz:
                                SELECT
						nazev, idmenu, menu_has_texty.texty_idtexty
					FROM
						menu
					LEFT JOIN
						menunazev on menunazev.menu_idmenu = menu.idmenu
					LEFT JOIN
						menu_has_texty on menu.idmenu = menu_has_texty.menu_idmenu and menu_has_texty.texty_idtexty = ".$_GET["idproduktu"]."


Vše šlape funguje dokud se tabulka "menu_has_texty" nenaplní více jak 150 hodnotami, poté hlasí chybu
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in


Nemáte s tím někdo prosím zkušenosti? nevíte co s tím? Děkuji za odpověd
Joker
Profil
Co říká mysql_error?
Tomanuel
Profil *
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in .....

Tohle nebo teď přesně nechápu.
Tori
Profil
Tomanuel:
mysql_query("...ten váš dotaz s LEFT JOINem..");
echo "Chyba: ".mysql_error();
Tomanuel
Profil *
Chyba: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay
Joker
Profil
Tomanuel:
Kolik tak řádků mají tabulky menu, menunazev a menu_has_texty?

Mimochodem k tomu varování (warning), mysql_result může vrátit resource nebo false v případě chyby. Čili s tím druhým případem je dobré počítat a nějak ho řešit.
Tomanuel
Profil *
Koukám že jste tady už danou situaci s někým řešil.
http://diskuse.jakpsatweb.cz/?action=vthread&topic=76382&forum=28&page=-1

menu - 72 záznamů
menunazev - 72 záznamů
menu_has_texty - momentálně 420
Joker
Profil
Tomanuel:
Koukám že jste tady už danou situaci s někým řešil.
Ale tam byl problém, že se dělal kartézský součin těch tabulek. Vzhledem k:
Vše šlape funguje dokud se tabulka "menu_has_texty" nenaplní více jak 150 hodnotami, poté hlasí chybu
tady bude asi podobný problém, ale ne tak zjevný.
Druhá možnost je, že server má prostě příliš nízko to MAX_JOIN_SIZE.

Ještě, jak vypadá ten konkrétní už sestavený dotaz, který se v tu chvíli posílá? Tj. přesně to co už jde do databáze?

Dodatek: taky můžete zjistit, kolik je MAX_JOIN_SIZE. Buď u hostingu, nebo:
show global variables like 'max_join_size'
Tomanuel
Profil *
jestli to vypisuji správně
$vysl=mysql_query("show global variables like 'max_join_size'");
			echo $vysl;


tak výsledek je toto.
Resource id #8

Jinak přesný dotaz je tento: (skoro stejný jako nahoře)
mysql_query("
			
					SELECT
						idmenu,nazev, menu_has_texty.texty_idtexty
					FROM
						menu
					LEFT JOIN
						menu_has_texty on menu.idmenu = menu_has_texty.menu_idmenu and menu_has_texty.texty_idtexty = ".$_GET["idproduktu"]."
					LEFT JOIN
						menunazev on menunazev.menu_idmenu = menu.idmenu
					WHERE
						idnadrazen = 0
					GROUP BY 
						idmenu
					");
Tomanuel
Profil *
Tak se mi to nejspíš podařilo vyřešit.

stačilo dát před dotaz
mysql_query('SET OPTION SQL_BIG_SELECTS=1');

a začalo to šlapat. Uvidíme co se stane až se časem tabulka naplní o trošku víc.

Ale díky za pomoc při řešení.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: