[GastForen Programmierung/Entwicklung PHP und MySQL Stichwortsuche mit mySQL

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Stichwortsuche mit mySQL

StefanB
Beiträge gesamt:

4. Mär 2004, 10:03
Beitrag # 1 von 6
Bewertung:
(3453 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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
X

Stichwortsuche mit mySQL

oesi50
  
Beiträge gesamt: 2315

4. Mär 2004, 12:15
Beitrag # 2 von 6
Beitrag ID: #73434
Bewertung:
(3453 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi StefanB

versuch doch mal:

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


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


als Antwort auf: [#73401]

Stichwortsuche mit mySQL

oesi50
  
Beiträge gesamt: 2315

4. Mär 2004, 12:24
Beitrag # 3 von 6
Beitrag ID: #73436
Bewertung:
(3453 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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)

Stichwortsuche mit mySQL

oesi50
  
Beiträge gesamt: 2315

4. Mär 2004, 12:33
Beitrag # 4 von 6
Beitrag ID: #73439
Bewertung:
(3453 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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)

Stichwortsuche mit mySQL

StefanB
Beiträge gesamt:

4. Mär 2004, 12:44
Beitrag # 5 von 6
Beitrag ID: #73441
Bewertung:
(3453 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]

Stichwortsuche mit mySQL

oesi50
  
Beiträge gesamt: 2315

4. Mär 2004, 12:56
Beitrag # 6 von 6
Beitrag ID: #73442
Bewertung:
(3453 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]
X