Extrahieren von Daten aus einer Tabelle.

sid61

Mitglied
Hallo,
ich habe da ein wenig kniffliges Problem. Ich muss aus einer Datenbanktabelle einige Werte für eine andere Anwendung auslesen. Das Problem dabei ist, das die gesamte Adresse mit allen relevanten Daten in einem Feld enthalten ist. Nun habe ich schon einiges probiert, komme aber nicht zur Lösung.

Ich benötige aus dem Datensatz jeweils die lat und lon Daten.

Bis jetzt habe ich nur diesen Weg :
Code:
SELECT f.*, v.`field_value`
     FROM `jos_js_res_fields` AS f
LEFT JOIN `jos_js_res_record_values` AS v ON v.`field_id` = f.`id`
    WHERE f.`published` = 1 AND field_id=8;

Als Antwort erhalte ich nachfolgende Ausgabe wobei mir neben den anderen Feldern jetzt das eigentliche Feld field_value mit ausgegeben wird (habe jetzt hier nur mal den Inhalt von field_value dargestellt.

Das genau ist mein Problem, ich benötige die Daten aus field_value, wobei ich hier die Werte lat und lon in erster Linie benötige. die s: Werte varieren hier auch und sind nicht immer gleich.

Code:
a:15:{s:6:"person";s:18:"Susanne Testermann";s:8:"address1";s:16:"Erlenstrasse 7-8";s:4:"city";s:10:"Grünheide";s:3:"zip";s:5:"15537";s:3:"lat";s:17:"52.41940192557698";s:3:"lon";s:19:"13.802175521850586 ";s:3:"tel";s:9:"123456789";s:3:"fax";s:9:"987654321";s:3:"mob";s:10:"5454545454";s:3:"icq";s:0:"";s:3:"msn";s:0:"";s:5:"skype";s:0:"";s:2:"ym";s:0:"";s:3:"aol";s:0:"";s:6:"google";s:0:"";}

Kann mir jemand da weiter helfen

Gruss
Sid61
 
Moin dbwizard,

ist in Prinzip immer eine berechtigte Frage, aber hier können wir die Spezifika des Datenbankblechs vermutlich schnell außer acht lassen, denn...

@sid61
.... natürlich ist es mit den üblichen Standard-SQL-Skalarfunktionen möglich, egal ob die nun SUBSTRING(), CHARPOS(), MID() oder POSSTRING() heißen.

Aber selbst das eben mal im MSAccess nachgeturnte Beispiel hier zeigt, dass es Dönekens wäre, dieses irgendwie in ein SQL-Statement trümmern zu wollen.

Hier muss minimal eine Stored Procedure den Job übernehmen - wenn Java, PHP oder #NET als Programmierwerkzeuge eingesetzt werden, dann sollen die sich mit der Stringverwurschtelung rumbalgen.

Abschreckender Ansatz unter Access-"SQL":
Code:
SELECT
Instr(vctab.vcfeld, ':"lat";s:') as PosOfLAT, 
 Mid(vctab.vcfeld, Instr(vctab.vcfeld, ':"lat";s:')+9, 2) as LenOfLat,
Mid(vctab.vcfeld, Instr(vctab.vcfeld, ':"lat";s:') +13,  int( Mid(vctab.vcfeld, Instr(vctab.vcfeld, ':"lat";s:')+9, 2))) as LatInhalt
FROM vctab;
In dieser vereinfachten Skizze würde ich ja nur aus einem VarChar-Feld VCFELD in einer Tabelle VCTAB nach dem String "lat" suchen und diesen Inhalt visualisieren.
Ergebnis mit dem oben geposteten Kasper-String:
Code:
PosOfLAT	LenOfLat	LatInhalt
139	17	52.41940192557698
--> übersetzt: An Position 137 des Gesamtstrings beginnt der String '"lat";'
-->und ich kann, wenn ich eine strenge Formatierung annehme, messerscharf erahnen,
wo denn die Länge genau dieses lat-Wertes im VCFELD steht. -->ich ermittle 17 als "LenOfLat"
---> und aus beiden zusammen "latinhalt"; s.o.

aber
* krank isses
* inperformant isses
* ohne jede Fehlerbehandlung, Fehlertoleranz und Programmierlogik (String nicht gefunden oder kein Num-Wert in LenOfX...) isses

und dabei habe ich gerade mit einem der beiden Such-Felder "lat" und wieimmer das andere heißt angefangen.

--> den Gedanken würde ich also NICHT weiterverfolgen.
Das sollte ein Werkzeug übernehmen, das es kann.
Stored procedure ODER halt die GUI.

Grüße
Biber
 
Zuletzt bearbeitet:
Zurück