Autor Zpráva
onliner
Profil
Můj dotaz:


$dotazfirm2 = "

(SELECT * FROM firmy WHERE zaznam = 1 AND zverejnit = 1 AND  kategorie LIKE ('%".$filter."%') AND MATCH (nazev,adresa,obec,osoba,popis,rozsirena,klicovky) AGAINST ('$odeslat')  ".$dotazla."   ORDER by id Desc, RAND()) 

union

 (SELECT * FROM firmy WHERE zaznam <> 1 AND zverejnit = 1 AND  kategorie LIKE ('%".$filter."%') AND MATCH (nazev,adresa,obec,osoba,popis,rozsirena,klicovky) AGAINST ('$odeslat')  ".$dotazla.")


 LIMIT $lister,20";



Z nějakého důvodu se mi výsledky v prvním oddíle z unino neřadá pokaždé jinak náhodně, ale pořád stejně. Netušíte proč?

Díky za rady
Alphard
Profil
a máte tam stejné id, abych řazení došlo k rand()?
onliner
Profil
víte já sem tam dal původně

order by zaznam a stejne se to neradilo nahodne, tak jsem tam dal ID to je špatne teda, aha, takže jsem tam vratil order by zaznam


a stejne to nejde :-(


nebo jde to nějak udělat aby tam nebylo order by něco, ale jenom RAND ???????
Alphard
Profil
(SELECT * FROM firmy WHERE zaznam = 1 AND zverejnit = 1 AND  kategorie LIKE ('%".$filter."%') AND MATCH (nazev,adresa,obec,osoba,popis,rozsirena,klicovky) AGAINST ('$odeslat')  ".$dotazla."   ORDER by RAND()) 
Alphard
Profil
krom toho, za určitých okolností je rychlejší použít vložený dotaz, viz
http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=79 907
onliner
Profil
Jsem z toho jelen, ale pořád se mi řadí položky z prvního oddílu stejně - a né náhodně:

$dotazfirm2 = "(SELECT * FROM firmy WHERE zaznam = 1 AND zverejnit = 1 AND  kategorie LIKE ('%"."$filter"."%')  ".$dotazla." ORDER by RAND()) union (SELECT * FROM firmy WHERE zaznam <> 1 AND zverejnit = 1 AND  kategorie LIKE ('%"."$filter"."%')  ".$dotazla." ) LIMIT $lister,20" ;

Kajman_
Profil *
Když už tam není to id, tak to je zvláštní... a podle čeho je to seřazené? Nepomůže union all?
onliner
Profil
to se používá jak?
Kajman_
Profil *
Připsáním slova all za nynější union.

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:

0