Hallo Vinzenz,
danke für die ausführliche Erläuterung. Folgende Abfrage mit den Buchstaben "eehgn" klappte erstmal sehr gut
SELECT w.ID AS ID_word, w.word
FROM word2 AS w
INNER JOIN word2_letter wl_e ON w.ID = wl_e.ID_word2 AND wl_e.letter = 'E' AND wl_e.n <= 2
INNER JOIN word2_letter wl_g ON w.ID = wl_g.ID_word2 AND wl_g.letter = 'G' AND wl_g.n <= 1
INNER JOIN word2_letter wl_h ON w.ID = wl_h.ID_word2 AND wl_h.letter = 'H' AND wl_h.n <= 1
INNER JOIN word2_letter wl_n ON w.ID = wl_n.ID_word2 AND wl_n.letter = 'N' AND wl_n.n <= 1
WHERE wl_e.n+wl_g.n+wl_h.n+wl_n.n = w.length
Das Problem ist nur, dass ich nicht als Bedingung hatte, dass alle Buchstaben vorkommen müssen. Obere Abfrage kommt also über "gehen", "hegen" und "gehn" nicht hinaus. Daher muss es noch die Möglichkeit geben, dass einzelne Buchstaben überhaupt nicht vorkommen. Ich habe mit OR statt AND und mit einer NULL-Angabe im INNER JOIN experimentiert, aber keine Ergebnisse erzielt.
Die Subselect-Struktur hat den Nachteil, dass ich in WHERE nicht auf die Unterabfragen referenzieren kann und damit die meines Erachtens notwendige Angabe von WHERE wl_e.n+wl_g.n+wl_h.n+wl_n.n = w.length
raus fällt.
Als Frage bleibt also offen: Wie stelle ich ein, dass nicht alle Buchstaben vorkommen müssen.
Gruß
Thomas
PS: Sorry für das Doppelposting. Stehe unter Zeitstress.