Announcement

Collapse
No announcement yet.

Zählen, wie oft ein String in einer Spalte vorkommt

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zählen, wie oft ein String in einer Spalte vorkommt

    Hallo.
    Ich habe da ein Problem, bei dem ich nicht weiterkomme...

    In meiner Tabelle gibt es die Textspalte "fotos". Darin enthalten sind Kommentare und Jahreszahlen. Ich möchte nun ermitteln, wie oft eine bestimmte Jahreszahl in der gesamten Spalte vorkommt.
    Dabei kann es passieren, dass die gesuchte Jahreszahl in einem Eintrag gar nicht, einmal oder mehrmals vorkommt.

    Beispiele für Einträger der Spalte "fotos":

    Reihe1: fotos-> "Nordsee 2008, Münster 2009, Ostsee 2008, Rügen 2011"
    Reihe2: fotos->"Ameland 2009"
    Reihe3: fotos->"Nordsee 2004, Ostsee 2008, Rügen 2009, New York 2019"

    Nun möchte ich wissen, wie oft die Zahl 2008 darin vorkommt.
    Das wäre bei dem Beispiel 3x (also 2x bei der ersten, nicht bei der 2. und 1x bei der 3. Reihe)

    Wie kann ich diese Abfrage schnell und sicher in mysql abfragen ?!

    Zur Zeit selektiere ich alle Einträge, in denen z.B. das Jahr 2008 vorkommt.
    All diese Treffer durchsuche ich mit einer php-Routine nach dem entsprechenden Jahr und zähle diese zusammen.

    Wenn ich nun insgesamt 8000 Datenbankeinträge auf diese Weise durchsuche und das nacheinander für die Jahre 1992 bis 2019 dauert das eine halbe Ewigkeit. Daher hoffe ich, dass mySQL eine entsprechende SCHNELLERE Routine zur Verfügung stellt...


    Danke für eure Hilfe,
    Maik

  • #2
    http://bookofzeus.com/articles/mysql...char-in-mysql/

    Das gesuchte im Feld ersetzen, die Differenz mit der ursprünglichen Länge ist das Vorkommen

    https://www.google.com/search?client...ring+in+string
    Christian

    Comment


    • #3
      Hallo !

      Danke für den Tipp, den ich für meine Zwecke versucht habe umzubauen.
      Der unten stehende Quellcode liefert jedoch ALLE Reihen der Tabelle zurück, nicht nur die ca. 20, die es sein müssten.
      Wo steckt mein Fehler ? Was habe ich falsch gemacht ?

      $abfrage3="SELECT LENGTH(fotos) - LENGTH( REPLACE ( fotos, '2019', '')) AS anzahl FROM register ";
      $ergebnis3 = mysql_query($abfrage3);

      $row = mysql_fetch_assoc($ergebnis3);

      print "Anzahl: ".$row['anzahl'];
      Zuletzt editiert von terasek; 11.05.2019, 15:09.

      Comment


      • #4
        ERLEDIGT !

        Es fehlte das sum() in der Abfrage:
        $abfrage3="SELECT name, sum( LENGTH( fotos ) - LENGTH( REPLACE( fotos, '2019', '' ) ) ) AS anzahl FROM register ";

        Die Anzahl der Treffer muss noch durch die Länge des abgefragten Strings geteilt werden und man ist fertig !

        Danke !!!!

        Comment

        Working...
        X