Ankündigung

Einklappen
Keine Ankündigung bisher.

Teilmenge eines String groupieren und aus geben.

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Teilmenge eines String groupieren und aus geben.

    Hallo Zusammen,

    ich stehe vor einer blöden Aufgabe.

    ich habe eine LotusNotes "DB" in einer MySQL DB abgebildet.

    Dadurch sind verschiedene Schwierigkeiten auf getaucht.

    In Einer Spalte ist folgendes

    Nr
    --------------
    RfC-10-AMS-0123
    RfC-10-DCS-0021
    RfC-10-PMO-0554
    RfC-10-CN-0001
    RfC-10-CN-0002
    RfC-10-AMS-0124

    Zu meiner Frage:

    ist es möglich den im Beispiel rot markierten String per SQL auszugeben und
    zu groupieren?

    Gruß Jörg

  • #2
    Wenn der String immer gleich aufgebaut ist, sollte es mit SUBSTRING_INDEX und SUBSTRING gehen.

    http://dev.mysql.com/doc/refman/5.1/de/string-functions.html

    Kommentar


    • #3
      Mal ein Lösungsansatz dazu:

      Code:
      CREATE TABLE lotusnotes (
       field VARCHAR(50) NOT NULL
      );
      
      INSERT INTO lotusnotes VALUES
      ('RfC-10-AMS-0123'),
      ('RfC-10-DCS-0021'),
      ('RfC-10-PMO-0554'),
      ('RfC-10-CN-0001'),
      ('RfC-10-CN-0002'),
      ('RfC-10-AMS-0124');
      
      SELECT r3.field3, COUNT(*)
        FROM (SELECT r2.field, r2.field1, r2.field2, SUBSTR(r2.field1, 1, r2.field2 -1) AS field3
                FROM ( SELECT r1.field, r1.field1, INSTR(r1.field1,'-') AS field2
                      FROM ( SELECT field, REPLACE(field,'RfC-10-','') AS field1
                               FROM lotusnotes
                           ) r1
                    ) r2
             ) r3
      GROUP BY r3.field3
      ORDER BY r3.field3;
      
      +--------+----------+
      | field3 | COUNT(*) |
      +--------+----------+
      | AMS    |        2 |
      | CN     |        2 |
      | DCS    |        1 |
      | PMO    |        1 |
      +--------+----------+
      4 rows in set (0.05 sec)
      
      mysql>
      Die Lösung ist natürlich sehr spezifisch und geht davon aus, da in jedem Feld 'RfC-10-' ersetzt werden kann und die Struktur immer identisch ist.

      Grüße
      Thomas

      Kommentar


      • #4
        Vielen Dank

        wenn ich das ganze mit einer WHERE-Klausel auf LIKE 'RfC-10-' begrenze dann funktioniert das prima.

        Gruß und Danke
        Jörg

        Kommentar


        • #5
          Zitat von Commu Beitrag anzeigen
          wenn ich das ganze mit einer WHERE-Klausel auf LIKE 'RfC-10-' begrenze dann funktioniert das prima.
          Stimmt, habe ich vergessen. Es war ja meine Frage, ob die Spalte immer "RfC-10-" enthält.
          Viel Erfolg damit.

          Grüße
          Thomas

          Kommentar

          Lädt...
          X