Lieber Matthias Apsel,
schon
'seiten.Volltext'
probiert?
das würde doch bedeuten, dass meine Tabelle tatsächlich ein solches Feld hätte, oder nicht? "Volltext" soll ein in der Abfrage neu erzeugtes Feld sein, das in der Tabelle "nativ" nicht vorkommt.
Das Problem ist, dass ich mich in der WHERE-Klausel nicht darauf beziehen kann/darf, obwohl ich den Wert dieses Feldes benötige. Mir ist nicht klar, warum.
Was als (weniger schöne) Alternative geht, ist das jeweilige Notieren der betroffenen, in der Tabelle tatsächlich vorhandenen Felder:
SELECT
`URL`,
`Titel`,
`Text`
FROM
`seiten`
WHERE
`Titel` REGEXP 'grün' OR
`Text` REGEXP 'grün'
Da ich aber mehr als nur "grün" testen möchte, wird das eine recht aufwendige Schreiberei, die ich mit dem durch CONCAT erzeugten Feld vereinfachen wollte:
SELECT
`URL`,
`Titel`,
`Text`
FROM
`seiten`
WHERE
(`Titel` REGEXP 'grün' OR
`Text` REGEXP 'grün')
AND
(`Titel` REGEXP 'blau' OR
`Text` REGEXP 'blau')
AND
(`Titel` REGEXP 'rot' OR
`Text` REGEXP 'rot')
Mit "Volltext" hätte das zumindest so ausgesehen:
SELECT
`URL`,
`Titel`,
`Text`,
CONCAT (`Titel`, ' ', `Text`) AS `Volltext`
FROM
`seiten`
WHERE
`Volltext` REGEXP 'grün'
AND
`Volltext` REGEXP 'blau'
AND
`Volltext` REGEXP 'rot'
Warum nur kann ich ein in der SELECT-Klausel frei definiertes Feld nicht in der WHERE-Klausel prüfen?
Liebe Grüße,
Felix Riesterer.
ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)