Entwickler-Ecke
Sonstiges (Web-Entwicklung) - Mysql Suche nach Blog-Tags
Regan - So 04.01.09 14:39
Titel: Mysql Suche nach Blog-Tags
Hallo,
ich programmiere gerade einen Blog. Ich habe dort eine Spalte "blog_tags"(VarChar(255)), die sämtliche Tags beinhaltet, die mit dem Eintrag vorhanden sind.
Wenn der Nutzer nun einen speziellen Tag auswählt, dann sollen alle Beiträge angezeigt werden, die in den Blog-Tags den speziellen Tag haben.
Wie sieht dazu die Abfrage aus? Ich habe es schon mit Like und dem Tag versucht, allerdings kommt dann immer kein Ergebnis heraus.
MfG
Regan
BenBE - So 04.01.09 14:53
Im Normalfall speichert man jeden Tag als eigenen Eintrag in einer Tabelle und verknüpft die einzelnen Blog-Posts.
Zeig mal deine bisherige Abfrage (und Tabellenstruktur).
Heiko - So 04.01.09 16:50
Und wie sind die Tags getrennt? Mit Komma, Leerzeichen etc.?
Regan - Mo 05.01.09 16:55
Ich habe meine Like-Variante auf eine Match-Variante umgepolt. Die funktioniert allerdings genauso wenig.
BenBE hat folgendes geschrieben : |
Im Normalfall speichert man jeden Tag als eigenen Eintrag in einer Tabelle und verknüpft die einzelnen Blog-Posts. |
Wir sind doch alle nicht ganz normal :wink: .
BenBE hat folgendes geschrieben : |
Zeig mal deine bisherige Abfrage (und Tabellenstruktur). |
Kommt sofort. Ich bekomme sogar einen Fehler! "
Filme" ist hier mein Suchwort.
Zitat: |
Erroneous Query.
Query:
SELECT blog_id, blog_title, blog_cat, blog_created_time AS blog_time, blog_poster_id AS poster_id FROM blog WHERE match(blog_tags) against('filme') ORDER BY blog_created_time DESC
Error:
Can't find FULLTEXT index matching the column list |
Heiko hat folgendes geschrieben : |
Und wie sind die Tags getrennt? Mit Komma, Leerzeichen etc.? |
Durch Leerzeichen.
Gibt es auch eine andere Möglichkeit?
Delete - Mo 05.01.09 17:22
Normalisiere Deine DB und Du hast diese Probleme nicht.
[edit] Beispiel:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| Tabelle Blogs: ============== Blog_ID (PK) Titel ...
Tabelle Tags: ============= Tag_ID (PK) Bezeichnung ...
Tabelle BlogTags: ================= Blog_ID (FK) Tag_ID (FK) //beide Schlüssel zusammen als PK |
Um nun die Blogs zu listen, in denen das Tag "filme" vorkommt, musst Du nur über die Zuordnungstabelle joinen.
SQL-Anweisung
1: 2: 3: 4: 5:
| SELECT B.Bezeichnung FROM Blogs B JOIN BlogTags BT ON BT.Blog_ID = B.Blog_ID JOIN Tags T ON T.Tag_ID = BT.Tag_ID WHERE T.Bezeichnung = 'filme' |
[/edit]
Regan - Mo 05.01.09 17:51
Vielen Dank für deine Antwort.
Das ist zwar schön und würde sicherlich funktionieren. Ich würde aber gern meine Variante anwenden wollen :wink: . Auch dafür muss es ja eine Lösung geben.
Regan - Mo 05.01.09 19:09
Nein :oops: . Das wusste ich gar nicht, dass ich das machen muss, bzw. war mir dem gar nicht bewusst. Jetzt verstehe ich auch die Fehlermeldung :autsch: .
Danke für die Hilfe :zustimm: .
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!