Registriert seit: 7. Feb 2006
429 Beiträge
|
Re: sql für ganz harte
11. Mai 2006, 01:31
ok, angenommen, ich habe in meiner tabelle t1 folgende einträge (ich hatte im vorherigen post vergessen zu erwähnen, dass t1 auch noch ein feld 'id' hat)
f1 = 1, f2 = 2, id = 2
f1 = 1, f2 = 1, id = 1
f1 = 1, f2 = 3, id = 3
f1 = 2, f2 = 2, id = 5
f1 = 2, f2 = 1, id = 4
f1 = 3, f2 = 2, id = 6
f1 = 3, f2 = 3, id = 7
jetzt ein paar beispieleinträge für t2:
id = 1, wert = 'wie '
id = 2, wert = 'geht '
id = 3, wert = 'das?'
jetzt sei mein suchstring s = 'wie geht %'
als ergebnismenge müsste ich 2 datensätze bekommen, der erste hat das feld f1 = 1, der zweite hat f1 = 2...
warum?
schaut man sich die ersten drei einträge an, dann sieht man, dass sie zusammengehören, da sie den gleichen wert für f1 haben. daher lässt sich ein "kombinierter string" bilden (ich nenn das jetz mal so), und dieser kombinierte string ist 'wie geht das?' (die datensätze aus t1 müssen bei bildung dieses strings nach t1.id sortiert sein)...und 'wie geht das?' is like 'wie geht %'
daher kommt das entsprechende f1 in die ergebnismenge
dito für den vierten und fünften eintrag: sie haben beide den gleichen wert f1; ihr kombinierter string ist 'wie geht '
auch 'wie geht ' is like 'wie geht %' -> auch ihr wert für f1 (2) kommt in die ergebnismenge
beim sechsten und siebten eintrag (sie gehören zusammen, weil gleiche f1-werte) ist der kombinierte string aber 'geht das?
'geht das' is not like 'wie geht %' .. daher kommt 3 NICHT in die ergebnismenge...
isses jetz ein bisschen klarer was ich meine?
danke und gruß,
martin
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
|