Autor | Zpráva | ||
---|---|---|---|
guest Profil |
#1 · Zasláno: 6. 3. 2007, 13:50:23
Nedala by se následující čás SQL dotazu nějak optimalizovat abych nemusel psát opakovaně OR? Vzhledem k tomu, že obdobných podmínek mám v kódu více, stává se ten kód nepřehledným
SELECT * FROM tabulka WHERE (mobil LIKE '%" . $_REQUEST['filtr'] . "%' or tel1 LIKE '%" . $_REQUEST['filtr'] . "%' or tel2 LIKE '%" . $_REQUEST['filtr'] . "%' or tel_prace LIKE '%" . $_REQUEST['filtr'] . "%') Napříkald nějakyprikaz(mobil, tel1, tel2, tel_prace.......) LIKE '%" . $_REQUEST['filtr'] . "%' Díky |
||
one_k Profil |
#2 · Zasláno: 6. 3. 2007, 13:59:22
Ja osobne bych resil vydledavani uplne jinak. Ale to je jedno..
Vyhledavani se tu nedavno resilo tak dej hledat a urcite to najdes. |
||
souki Profil |
#3 · Zasláno: 6. 3. 2007, 14:02:52
mohl by jsi na to požít v PHP cyklus for.... ale imho ten dotaz bude sice přehledný a pořád stejně pomalý
|
||
guest Profil |
#4 · Zasláno: 6. 3. 2007, 14:03:02 · Upravil/a: guest
Ja osobne bych resil vydledavani uplne jinak. Ale to je jedno..
neni to jedno, mě to zajímá jak bys to tedy řešil. Já na tomhle způsobu netrvám - právě že mi přijde dost kostrbatý. Navíc souki píše, že je tento způsob vyhledávání pomalý ... pokud je nějaký rychlejší způsob vyhledávání, budu rád |
||
one_k Profil |
#5 · Zasláno: 6. 3. 2007, 14:38:04
guest
ok takze muj zpusob vyhledavani: vytvorit si vlastni script na indexovani sve databaze(doporucuji v necem jinem nezli PHP) a jeste by mohl zprostredkovavat komunikaci mezi databazi pro indexovani. Vypadalo by to takto: jednou tydne zaindexujes obsah pri hledani posles scriptu dotazovany retezec - on ti vrati id a tabulku ze ktere to id je a ty si daslim dotazem zjistis podrovbnejsi info o danem produktu IMHO takovyto script si myslim uz bude vytvoren napr. na phpclasses.org nebo sourceforge by neco mohlo byt.. |
||
guest Profil |
#6 · Zasláno: 6. 3. 2007, 14:49:39
one_k
tak to už je na mě poněkud složité, ale i tak děkuji |
||
guest Profil |
#7 · Zasláno: 6. 3. 2007, 17:17:46
zkusil jsem to trochu předělat a u tohodle dotazu:
SELECT * FROM telefony WHERE MATCH(jmeno, prijmeni, firma) AGAINST('pokus') mi to hází následující chybu: Syntaktická chyba (chybí operátor) v dotazovém výrazu MATCH(jmeno, prijmeni, firma) AGAINST('pokus') Jaký operátor tam chybí? |
||
Kajman_ Profil * |
#8 · Zasláno: 6. 3. 2007, 18:53:17
Tak si před or zařádkujte, bude to přehlednější.
|
||
guest Profil |
#9 · Zasláno: 6. 3. 2007, 20:01:20
Kajman_
Tak si před or zařádkujte, bude to přehlednější. to máte pravdu, ale myslel jsem jestli to nejde nějak jednodušeji napsat vzhledem k tomu, že hledám stejný výraz v několika sloupcích, ale asi to zatím opravdu jen odřádkuji aby to bylo alespoň přehledné. |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0