webForumDet fria alternativet

Fråga funkar inte i mySql men i Access

Databaser & SQLur Databashanterare & SQL

2 svar · 467 visningar · startad av Melitta

Medlem sedan sep. 2003448 inlägg
Frågan#1

Hejsan.
Håller just på att migrera min blogg från access till mySql och sprang på detta problem:

[MySQL][ODBC 3.51 Driver][mysqld-5.0.45-log]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 '+t1.cat+'%' OR t2.cat LIKE ''+t1.cat+'%' OR t2.cat LIKE '%'+t1.cat+'' AND site=' at line 1

på frågan nedan:

select t1.cat,(select count(t2.cat) from tblDagbok as t2 where t2.cat LIKE '%'+t1.cat+'%' OR t2.cat LIKE ''+t1.cat+'%' OR t2.cat LIKE '%'+t1.cat+'' AND  site='"&thisSite&"') from tblCat as t1 where site='"&thisSite&"' Group by cat

Eftersom jag inte kan mySql alls så vore det grejt om nån kunde peka mig i rätt riktning :)

Medlem sedan juni 20008 205 inlägg
#2

Skulle säga att du inte kan använda + för konkatenering. Använd concat istället, dvs

select t1.cat, (
    select count(t2.cat) from tblDagbok as t2 where 
        t2.cat LIKE CONCAT('%', t1.cat, '%'),
        OR t2.cat LIKE CONCAT(t1.cat, '%'),
        OR t2.cat LIKE CONCAT('%', t1.cat)
        AND  site='"&thisSite&"') 
    from tblCat as t1 
    where site='"&thisSite&"' Group by cat

Sen vill jag också hälsa att du inte behöver ha med de två OR-villkoren, eftersom exempelvis LIKE "%bc%" matchar såväl "abcd" som "abc" och "bcd". Sen ser frågan inte helt superoptimal ut ur prestandasynpunkt (för att uttrycka sig milt) men det kanske är medvetet? :)

Medlem sedan sep. 2003448 inlägg
#3

Tusen tack, testade Concat tidigare men det funkade inte, eller det funkade men jag hadde ytterligare fel i koden och nu när dom var fixade så funkar det :)

133 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)