webForumDet fria alternativet

Söka ifrån flera kolumner/tabeller?

Databaser & SQL

9 svar · 315 visningar · startad av Jesper T

Medlem sedan nov. 20017 144 inlägg
Frågan#1

Skulle vilja formulera en lite komplex sökfråga.
Dels så skall man kunna söka i title,keywords och i beskrivning. Men man skall även i samma fråga söka i innehållet i tabellen content (där tc_tp_id motsvarar tp_id). Idéer?

[blue][b]Tabell pages[/b]
----------------------------------------------------------
tp_id | tp_title | tp_keywords | tp_description 
----------------------------------------------------------[/blue]
1      |Hem      | ett,två,tre |En fin sida
2      |Länkar   | länkar,fun  |Mina länkar[blue]
----------------------------------------------------------

[b]Tabell content[/b]
-------------------------------------------
tc_id | tc_tp_id | tc_pagecontent
-------------------------------------------[/blue]
1     |1         |innehåll i sidan 'hem'
2     |1         |mera innehåll
3     |1         |ännu mera innehåll
4     |2         |innehåll i sidan 'Länkar'[blue]
-------------------------------------------[/blue]
Medlem sedan dec. 200012 464 inlägg
#2
select tp_id from pages 
where 'sql' in (tp_title,tp_keywords,tp_description)
or tp_id in (select tc_tp_id
  from content
  where 'sql' = tc_pagecontent)
Medlem sedan nov. 20017 144 inlägg
#3

Ursäkta min dumhet, men vad är 'sql'. Och om jag vill skriva ut resultatet hur gör jag då?

		sql= "select tp_id,tp_title,tp_description,tp_keywords from pages" 
		sql = sql & " where '"& qs &"' in (tp_title,tp_description,tp_keywords)"
		sql = sql & " or tp_id in (select tc_tp_id "
  		sql = sql & " from content where '"& qs &"' = tc_pagecontent)"
Medlem sedan dec. 200012 464 inlägg
#4

'sql' motsvarar din söksträng.

Och om jag vill skriva ut resultatet hur gör jag då?

Jag förstår inte problemet. Det är som vilken fråga som helst.

Medlem sedan nov. 20017 144 inlägg
#5

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select tc_tp_id from content where 'mitt sökord' = tc_pagecontent)'

Ok. får detta nu.
Trodde att man måste köra med Like '% osv.?

Medlem sedan dec. 200012 464 inlägg
#6

Felet ligger i Mysql som saknar vissa basala funktioner.

select distinct tp_id from pages join content
on tp_id = tc_tp_id
where tp_title like '%sql%'
or tp_keywords like '%sql%'
or tp_description like '%sql%'
or tc_pagecount like '%sql%'
Medlem sedan nov. 20017 144 inlägg
#7

Ok, vad bra att det gick att lösa ändå då. :)
Tack!

Medlem sedan dec. 200012 464 inlägg
#8

Det är nog bättre att ha en left join när jag tänker

Medlem sedan dec. 200012 464 inlägg
#9
select distinct tp_id from pages left join content
on tp_id = tc_tp_id
where tp_title like '%sql%'
or tp_keywords like '%sql%'
or tp_description like '%sql%'
or tc_pagecontent like '%sql%' or tc_pagecontent is null
Medlem sedan nov. 20017 144 inlägg
#10

Ja la till "Group by tp_id" annars så fick jag upp för många träffar.

262 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)