robertroth: mySQL Bei Suche über mehrer Spalten auch den Feldnamen des Treffer ausgeben

Beitrag lesen

Liebe Mitdenker, liebe Wissende, liebe Neugierige,

n'Abend,

clientno   type  data
--------------------------------  
70678      Fax   0531/12345-7
70678      Tel   0531/12345-0
70678      Mail  hans@dampf.lan
70678      Mob   0171/555333555

Könntest Du das Bitte perzisieren, stehe da momentan auf dem Schlauch!?

Statt dass Du dir einen Krampf in der SQL-Schicht codest mit dem vorhandenen (schlechten) Datenmodell und dann voraussichtlich auch in der API noch so verknotet weitermachen musst, könntest Du dein Datenmodell überdenken, und die Eigenschaften (Tel, Fax, Mobile, Mail, ...) aus der Waagerechten (dem Datensatz) herausnehmen und in die Senkrechte (eine eigene Tabelle) verfrachten.

für diese Anregung hast du von mir schon ein Plus bekommen, zumal dein Beispiel sehr schön zeigt, dass man dann mühelos noch weitere Kontaktmöglichkeiten einbringen kann (hier die Mailadresse).

Allerdings würde ich dann dringend raten, die Telefonnummern auch normalisiert zu speichern. Dein Beispielauszug enthält noch verschiedene Trennzeichen. Die würde ich dann komplett rauslöschen.

Da Speicherplatz nicht mehr sooo teuer ist, baue ich in solchen Fällen immer zwei Datenspalten auf. Eine mit Formatierung (Slashes, Dashes, Umlaute, Nicht-ASCII-Zeichen, Trallala) und eine normalisierte. Die normalisierte wird immer automatisch durch einen Trigger und eine Benutzerfunktion beschrieben, wenn sich in der formatierten etwas ändert. Die normalisierte ist gegen direktes Beschreiben geschützt.

Spirituelle Grüße
Euer Robert

--
Möge der Forumsgeist ewig leben!