hilfdirselbst.ch
Facebook Twitter gamper-media
StefanB
Beiträge: 71
4. Mär 2004, 10:03
Beitrag #1 von 6
Bewertung:
(2588 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Stichwortsuche mit mySQL


Hallo,

für eine Bilddatenbank habe ich eine Tabelle mit Bildinformationen eingerichtet. Das Feld "Stichworte" soll zu jedem Bild ein oder mehrere Suchbegriffe enthalten (Datentyp VARCHAR oder TEXT?). Noch kann ich entscheiden, ob ich diese mit Leerzeichen, Kommata oder was auch immer trenne. Bislang sind sie durch Kommata getrennt.

Die Datenbankabfrage funktioniert bei mir nur mit
..."LIKE %suchbegriff%", zeigt also auch Ergebnisse, in denen nur Substrings übereinstimmen. Wenn ich stattdessen ..." = suchbegriff" verwende, erhalte ich natürlich keine Ergebnisse, weil so der gesamte Feldeintrag mit dem Suchbegriff verglichen wird.

Was muss ich also tun, um eine exakte Suche eines oder mehrerer Suchbegriffe zu ermöglichen?

Danke, Stefan Top
 
X
oesi50  A  S
Beiträge: 2315
4. Mär 2004, 12:15
Beitrag #2 von 6
Beitrag ID: #73434
Bewertung:
(2588 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Stichwortsuche mit mySQL


hi StefanB

versuch doch mal:

SELECT .. WHERE spalte LIKE '%stichwort,%'


Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)
als Antwort auf: [#73401] Top
 
oesi50  A  S
Beiträge: 2315
4. Mär 2004, 12:24
Beitrag #3 von 6
Beitrag ID: #73436
Bewertung:
(2588 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Stichwortsuche mit mySQL


Nachtrag:

besser ist es natürlich, die Tabellen ordentlich zu normalisieren.

Tabelle1 - Deine Daten
ID,Name,blabla

1,Bild1, blabla
2,Bild2, blabla
3,Bild3, blabla

Tabelle2 - Stichwörter zu den Daten
ID,Stichwort
1,groß
1,grün
2,rot
2,klein
3,rot
3,schön

Die Abfrage dazu:

SELECT t1.name,t2.Stichwort FROM Tabelle1 AS t1
JOIN Tabelle2 AS t2 ON t1.id = t2.id
WHERE t2.Stichwort = 'rot'

Das Ergebnis sollte jetzt sein

Bild2,rot
Bild3,rot

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)
als Antwort auf: [#73401]
(Dieser Beitrag wurde von oesi50 am 4. Mär 2004, 12:25 geändert)
Top
 
oesi50  A  S
Beiträge: 2315
4. Mär 2004, 12:33
Beitrag #4 von 6
Beitrag ID: #73439
Bewertung:
(2588 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Stichwortsuche mit mySQL


noch'n Nachtrag
Mit der Normalisierung löst Du auch ganz elegent dein voriges Problem:

SELECT .....
JOIN ...
WHERE Stichwort = 'rot' OR Stichwort='klein' AND Stichwort ='groß'

natürlich kann das auch noch geklammert werden:

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)

Zusatzbemerkungen:
Lege Dein Stichwortfeld mit BINARY an, damit die Umlaute richtig erkannt werden.
Verwende bitte !niemals! SELECT * ..., das ist nur zum Testen gut.
als Antwort auf: [#73401]
(Dieser Beitrag wurde von oesi50 am 4. Mär 2004, 12:38 geändert)
Top
 
StefanB
Beiträge: 71
4. Mär 2004, 12:44
Beitrag #5 von 6
Beitrag ID: #73441
Bewertung:
(2588 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Stichwortsuche mit mySQL


Danke, oesi, für die schnelle Fürsorge!

Das ist exakt das Thema, vor dem ich mich gedrückt habe. Ich bin bisher mit einer einzigen Tabelle ausgekommen und dachte, so würde es auch bleiben. War wohl nix.

Na denn, auf zu neuen Ufern...

Danke, Stefan
als Antwort auf: [#73401] Top
 
oesi50  A  S
Beiträge: 2315
4. Mär 2004, 12:56
Beitrag #6 von 6
Beitrag ID: #73442
Bewertung:
(2588 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Stichwortsuche mit mySQL


Wenn Du gerade dabei bist,
in der Tabelle1 sollte ID der Primärschlüssel sein.
in der Tabelle2 sollte ID ein normaler Index sein(nicht unique).

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)
als Antwort auf: [#73401] Top
 
X