tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
242
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von sid61
    sid61 sid61 ist offline Mitglied Silber
    Registriert seit
    Dec 2007
    Ort
    Rüdersdorf bei Berlin (Brandenburg)
    Beiträge
    52
    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 :
    1
    2
    3
    4
    
    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 :
    1
    
    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
     

  2. #2
    dbwizard dbwizard ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Ort
    Zürich
    Beiträge
    285
    Zitat Zitat von sid61 Beitrag anzeigen
    Hallo,
    ich habe da ein wenig kniffliges Problem. Sid61
    Hallo,

    welche Datenbank darf's den sein?


    Gruss
     

  3. #3
    Biber2 Biber2 ist offline Mitglied Gold
    Registriert seit
    Jan 2007
    Ort
    Bremen
    Beiträge
    215
    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 :
    1
    2
    3
    4
    5
    
    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 :
    1
    2
    
    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
    Geändert von Biber2 (21.11.08 um 18:16 Uhr)
     

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 05.01.11, 09:05
  2. Vergleich von Daten in einer Tabelle
    Von Chuck_Harnes im Forum Relationale Datenbanksysteme
    Antworten: 5
    Letzter Beitrag: 26.11.09, 15:47
  3. [VBA]Sortierung von Daten einer Tabelle
    Von Dark Ranger im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 07.08.07, 15:26
  4. Antworten: 3
    Letzter Beitrag: 20.05.07, 14:22
  5. Auswählen von Daten aus einer Tabelle
    Von nox im Forum HTML & XHTML
    Antworten: 1
    Letzter Beitrag: 12.10.05, 21:41