Tobias Weisserth: Dynamische Suche in Tabellen einer SQL Datenbank

Beitrag lesen

Nochmals Danke für die Hilfe,

Das mit dem Suchen ist allerdinsg etwas missverständlich gewesen. Ich meinte damit eigentlich nicht das Einsetzen geschickter SQL Statements.

Folgendes Problem:

In einer Tabelle sind einfache Datensätze mit verschiedenen Feldern gespeichert.

Beispiel Datensatz:

Feld1 => Wert1
Feld2 => Wert2

usw.

Eine Webseite mit einem Formular soll die Möglichkeit bieten, alle Datensätze dieser Tabelle nach einem Userinput zu durchsuchen. Es sollen die Datensätze ausgegeben werden, in denen der Input mindestens einmal vorgekommen ist. Ausserdem soll spezifiert werden können, in welchen Feldern der Datensätze gesucht werden soll.

Diese Suche lässt sich offensichtlich nicht mit SQL alleine lösen. Ich dachte daran Perl und das DBI Modul zu verwenden. So kann ich Perl den Input und Output managen lassen und benutze DBI, um mittels SQL dann alle Datensätze nach dem Input zu durchsuchen und später als HTML wieder auszugeben.

Meine ursprüngliche Frage war, ob es für dieses Problem schon verfügbare Lösungen gibt.

Gruß,
Tobias

Hallo,

Dann bleibt allerdings noch der Suchalgorithmus. Gibt es da einen etablierten, der sich durchgesetzt hat und verfügbar ist? Ich will das Rad nicht neu erfinden ;-)

Für das ist an sich die Datenbank zuständig. SQL heißt nicht von ungefähr so (Structured Query Language).
Ein typisches select statement sieht etwas so aus:

SELECT name, vorname, adresse, telefonnummer
   FROM personen

Das würde bestimmte Eigenschaften (Felder) _alle_ Datensätze auflisten, welche in der Tabelle personen gespeichert sind.

SELECT name, vorname, adresse, telefonnummer
   FROM personen
   WHERE alter >= 18
      AND alter =<40
      AND geschlecht = 'w'

Mit diesem Statement würden zwar auch die gleichen Eigenschaften wie oben aufgelistet werden, jedoch nur jener Personen, welche weiblich und zwischen 18 und 40 sind.
Voilá, und da hast Du schon eine Suchabfrage. Wie die Datenbank das jetzt genau erledigt, das kannst Du zwar nicht ohne weiteres feststellen, allerdings ist das (zumindest in der ersten Zeit) auch irrelevant. (Außer Du beschäftigst Dich gerade mit Datenbank- bzw. Statementtuning *g*)

Ansonsten sehe ich die Sache sehr optimistisch.

Nebenbei: Weis einer von Euch vielleicht, was es mit Oracle Schemata zu tun hat, in denen Tabellen abgelegt sind? Für jedes Schema muss man sich selbstständig anmelden, dann hat man SQL Zugriff auf genau die Tabellen, die im Schema abgespeichert sind. Sind Schemata so etwas wie unabhängige Datenbanken, die von einem einzigen Oracle Server verwaltet werden? Gibt es eventuell Zusammenhänge mit SQL, von denen ich in Bezug auf Schemata wissen sollte?

So im Groben besitzt jede Tabelle (bzw. jedes Objekt) einen Besitzer. Diesem Besitzer ist ein Schema zugeordnet, in dem die DB-Objekte zu finden sind. Allerdings kann mittels entsprechender Rechtevergabe (Grants) verschiedenen Datenbank-Benutzern mehr oder weniger Zugriff auf Objekte in einem Fremden Schema gewährt werden. Da das Thema Oracle aber ein ziemlich komplexes ist, solltest Du am Besten nochmals in die Bibliothek und dort auch ein passendes Buch über Oracle ausleihen;-)
Und wenn Du schon da bist, nimm auch noch eins über SQL-Grundlagen mit, sofern das Oraclebuch hier nicht sowieso erschöpfende Antworten liefert.

Grüße
  Klaus