webForumDet fria alternativet

Klurig MySQL fråga

Databaser & SQL

4 svar · 770 visningar · startad av dp81

Medlem sedan okt. 200447 inlägg
Frågan#1

Jag har en korsordssida där man kan ange vilka bokstäver man har till ett specifikt ord och få upp en lista med vilka ord som passar in.

Nu tänkte jag utveckla detta så att man kan söka på korsande ord i samma sökning för att begränsa resultatet ytterligare.

Exempel: Första bokstaven i ordet TEST saknas och första bokstaven i det korsande ordet TRUMPET:

?EST
R
U
M
P
E
T

Går det att ställa en sån fråga i MySQL?

Medlem sedan aug. 20039 340 inlägg
#2
SELECT ord1.ord, ord2.ord 
FROM  ordlista ord1, ordlista ord2
WHERE ord1.ord LIKE 't_st' AND ord2.ord LIKE 'trump_t' 
  AND SUBSTRING(ord1.ord, 2, 1) = SUBSTRING(ord1.ord, 6, 1)
  AND ord1.id <> ord2.id;

Understrecket är ett wildcard. Substring plockar ut en delsträng. Första siffran är startoffset, räknat från 1. Andra siffran är längden på strängen som plockas ut.
Den frågan bör göra det du vill. Däremot suger nog prestandan, så se upp med det.

Medlem sedan juni 200032 967 inlägg
#3

SQL-frågor ställs bäst i SQL-forumet. Flyttas.

Medlem sedan okt. 200447 inlägg
#4

Tack så jättemycket för hjälpen!

Ändrade till ord2 på rad 4 så fungerade det :-)

SELECT ord1.ord, ord2.ord
FROM ordlista ord1, ordlista ord2
WHERE ord1.ord LIKE 't_st' AND ord2.ord LIKE 'trump_t'
AND SUBSTRING(ord1.ord, 2, 1) = SUBSTRING(ord2.ord, 6, 1)
AND ord1.id <> ord2.id;

Medlem sedan okt. 200447 inlägg
#5

...

259 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)