Autor | Zpráva | ||
---|---|---|---|
Lopyn Profil |
#1 · Zasláno: 14. 11. 2007, 10:44:52
Chtěl jsem se pls zeptat jakým způsobem bych měl udělat vyhledávání pomocí Like. Mám tři tabulky z kterým by se eventualně vyhledávalo . Pokud bych vyhledával na třikrát tj. tři dotazy, byla by to prasárna a ještě k tomu by byl problém se stránkováním. Můžete mi pls někdo poradit?
|
||
Kajman_ Profil * |
#2 · Zasláno: 14. 11. 2007, 11:06:23
Já bych klidně udělal dotazy tři a tři nezávislá stránkování.
Ale můžete vybrat stejné (či obdobné) sloupečky a spojit jednotlivé selecty přes union. |
||
Lopyn Profil |
#3 · Zasláno: 14. 11. 2007, 12:06:38
a sjednotit bych to měl do dočasné tabulky ?
|
||
Kajman_ Profil * |
#4 · Zasláno: 14. 11. 2007, 12:26:17
Stejdnotíte to díky tomu union
select 'tabulka1' zdroj, id, nadpis from tabulka1 where nadpis like '%text%' union select 'tabulka2' zdroj, id, nadpis from tabulka2 where nadpis like '%text%' union select 'tabulka3' zdroj, id, nadpis from tabulka3 where nadpis like '%text%' Dočasnou tabulku nepotřebujete. |
||
Lopyn Profil |
#5 · Zasláno: 14. 11. 2007, 13:18:55
jo takhle. Děkuji mnohokrát.
|
||
Lopyn Profil |
#6 · Zasláno: 14. 11. 2007, 14:56:51
Aj. moje první tabulka v který bych chtěl vyhledávat nemám sloupec napdpis. Všechny ostatní mají. Pak tam má ještě sloupec text, který mají všichni a tak jsem se chtěl zeptat jestli jak v tomto případě použítít JOIN? Děkuji
|
||
Kajman_ Profil * |
#7 · Zasláno: 14. 11. 2007, 21:44:45
Třeba
'novinka' as nadpis nebo substr(velkysloupec,1,100) as nadpis Záleží na Vás, co tam chcete na místě nadpisu. |
||
Lopyn Profil |
#8 · Zasláno: 16. 11. 2007, 18:48:08
No právě že nic. U toho nadpisu to ještě není jasný, ale pokud vyhledávám třeba v článcích a zárověn v nejblížších akcích tak u článků mám datum. A to u druhého nikoliv. A hlavně mi jde to, že newím podle čeho mám rozlišovat kam odkazovat z jednolivých výsledků dotazu. Když chci aby se šlo prokliknout na jednlivý segmenty kde vyhledávám
|
||
Kajman_ Profil * |
#9 · Zasláno: 16. 11. 2007, 19:27:03
No právě že nic.
Když nic, tak tam dejte nic. null as nadpis newím podle čeho mám rozlišovat A podle sloupečku zdroj se můžete rozmyslet, kam budete odkazovat. |
||
Lopyn Profil |
#10 · Zasláno: 16. 11. 2007, 22:21:09
jo tak...:) díky
|
||
Lopyn Profil |
#11 · Zasláno: 17. 11. 2007, 17:00:14
No ale stejnak jsem nevyřešil to co jsem potřeboval....
$query1=(" select text,null as nadpis,mesic,rok,null as casakce,null as casdo FROM cislaslovo where (text LIKE '%$hlret%') union select text,nadpis,mesic,rok,null as casakce,null as casdo FROM cislaobsah where (text LIKE '%$hlret%' OR nadpis LIKE '%$hlret%') union select text,nadpis,null as mesic,casakce,casdo,null as rok FROM akce where (text LIKE '%$hlret%' OR nadpis LIKE '%$hlret%') "); null as nadpis mi zajistí že nadpis bude NULL furt i v ostatních záznamech. Nevíte jak bych to moh udělat? |
||
Kajman_ Profil * |
#12 · Zasláno: 18. 11. 2007, 18:09:37
Tak tam jde prázný řežezec. SQL většinou potřebuji v prvním dotaze zjistit, jakého typu ten sloupeček je. Stačilo by přehodit selecty, kdyby jste měl aspoň jeden select se vším. Takhle si musíte jeden vybrat a dát tam takové hodnoty, aby to šlo poznat, co to je za sloupeček.... prázný řetězec, nulu atp.
|
||
Lopyn Profil |
#13 · Zasláno: 19. 11. 2007, 20:40:47
No takhle to nefunguje...Mám pocit že na to jdu špatnou cestou....
|
||
Kajman_ Profil * |
#14 · Zasláno: 19. 11. 2007, 21:02:42
Nefunguje to nějak konkrétně??? Opravdu nejde něco takového?
$query1=(" select text,nadpis,0 as mesic,0 as rok,casakce,casdo FROM akce where (text LIKE '%$hlret%' OR nadpis LIKE '%$hlret%') union select text,nadpis,mesic,rok,null as casakce,null as casdo FROM cislaobsah where (text LIKE '%$hlret%' OR nadpis LIKE '%$hlret%') union select text,null as nadpis,mesic,rok,null as casakce,null as casdo FROM cislaslovo where (text LIKE '%$hlret%') "); |
||
Časová prodleva: 16 let
|
0