mysql datenbank auslesen
der_hansi
- php
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
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.
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
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
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.
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).