Autor Zpráva
Lopyn
Profil
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 *
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
a sjednotit bych to měl do dočasné tabulky ?
Kajman_
Profil *
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
jo takhle. Děkuji mnohokrát.
Lopyn
Profil
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 *
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
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 *
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
jo tak...:) díky
Lopyn
Profil
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 *
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
No takhle to nefunguje...Mám pocit že na to jdu špatnou cestou....
Kajman_
Profil *
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%')
");

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: