webForumDet fria alternativet

Klurig MySQL fråga

4 svar · 768 visningar · startad av dp81

dp81Medlem sedan okt. 200447 inlägg
#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?

nitro2k01Medlem sedan aug. 20039 342 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.

@ndersMedlem sedan juni 200032 969 inlägg
#3

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

dp81Medlem 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;

dp81Medlem sedan okt. 200447 inlägg
#5

...

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