Hallo LastBoyScout,
ich hätte zwei Alternativen.
(1) Verwende UNION ALL statt OR:
SELECT tabelle.*, 'PHONE' as fundstelle
FROM tabelle
WHERE PHONE LIKE '$search'
UNION ALL
SELECT tabelle.*, 'MOBILE' as fundstelle
FROM tabelle
WHERE MOBILE LIKE '$search'
UNION ALL
SELECT tabelle.*, 'FAX' as fundstelle
FROM tabelle
WHERE FAX LIKE '$search'
(2) Ermittle die Fundstelle über einen CASE-Ausdruck.
SELECT tabelle.*,
CASE WHEN PHONE LIKE '$search' THEN 'PHONE'
WHEN MOBILE LIKE '$search' THEN 'MOBILE'
WHEN FAX LIKE '$search' THEN 'FAX' END as fundStelle
FROM tabelle
WHERE PHONE LIKE '$search' OR MOBILE LIKE '$search' OR FAX LIKE '$search'
Schön ist beides nicht. In der ersten Variante rennst Du 3x durch die Tabelle, in der zweiten Variante prüfst Du alles doppelt. Vermutlich ist die 2. Variante schneller.
Ich überlege gerade noch ob man eine Cursorschleife sinnvoll einsetzen kann, aber das dürfte unter dem Strich am mühsamsten und langsamsten sein.
Dass Du beim befüllen der Variablen $search an's Escapen denken musst, schreibe ich mal rein pro forma unten drunter 😉
Rolf
--
sumpsi - posui - obstruxi