der_hansi: mysql datenbank auslesen

Hallo,

ich habe ein kleines Problem, welches mich ärgerlicher Weise schon ein gewisse Zeit aufhält.

Ich habe in meiner Datenbank eine Spalte (navi_id) Datensätze mit einer fortlaufenden Nummer für eine Kategorie.
02 ->Hauptgruppe
02.01 ->1. Untergruppe
02.02 ->2. Untergruppe
02.n ->n. Untergruppe

Jetzt möchte ich diese Einträge alle auslesen. Meine Anweisung für die Datenbank lautet ja (nur der entsprechende Ausschnitt):
SELECT * FROM navigation WHERE navi_id = '02'

Dort wird dann nur der Datensatz mit der 02 ausgelesen.

Ich benötige nun eine Where- Aktion welche nach "enthält 02" filtert, gibt es so eine? Wenn nein, wie muss ich die Abfrage dann machen?

Mit einem freundlichen Elvis Gruß
Der Hansi

  1. Ich benötige nun eine Where- Aktion welche nach "enthält 02" filtert, gibt es so eine? Wenn nein, wie muss ich die Abfrage dann machen?

    Du könntest mit Wildcards arbeiten. Also '02*'.
    Allerdings werden dann auch andere ungewollte Werte angezeigt (z.B. 03.02 ).
    Eventuell eine zusätzliche Spalte anlegen und nur die erste (01, 02, 03,...) durchsuchen, dann kommst du auch ohne Wildcards aus.

    1. Hi,

      Du könntest mit Wildcards arbeiten. Also '02*'.
      Allerdings werden dann auch andere ungewollte Werte angezeigt (z.B. 03.02 ).

      oder auf die entsprechenden String-Funktionen zurückgreifen, wie:
      LIKE, INSTR, REGEXP:
      http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

      zb: ... WHERE Spalte LIKE '%2%'
      (wenn der Joker vor dem Suchstring steht, kann bei größeren Tabellen die Performance einbrechen)

      herzliche Grüße

      1. Hallo,

        zb: ... WHERE Spalte LIKE '%2%'

        Das hat leider auch nicht funktionert, entweder ich bin zu blöd das jetzt noch hinzu bekommen oder es funktioniert einfach nicht.

        Gruß Der_Hansi

    2. Hallo,

      Eventuell eine zusätzliche Spalte anlegen und nur die erste (01, 02, 03,...) durchsuchen, dann kommst du auch ohne Wildcards aus.

      das habe ich nun gemacht. Ich habe nun eine Tabelle mit den Spalten:
      navi_id
      navi_mod (Hauptgruppe)
      navi_area (soll vergleichen, ob dort die Angabe von navi_mod drin steht)
      navi_item(Untergruppe)

      Wenn ich nun die Abfrage so abändere, dass sie beide Optionen (navi_id=$id oder navi_mod=navi_area):
      SELECT * FROM navigation WHERE navi_id = '$id' OR navi_mod=navi_area ORDER BY navi_id";

      bekomme ich keine Ausgabe mehr.

      1. SELECT * FROM navigation WHERE navi_id = '$id' OR navi_mod=navi_area ORDER BY navi_id";

        Versuche mal schrittweise vorzugehen (z.B. erstmal "OR navi_mod=navi_area" weglassen) und dir Fehlermeldungen von MySQL ausgeben zu lassen ("or die (mysql_error())" an deine Query anhängen).