Autor |
Beitrag |
Regan
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: So 04.01.09 14:39
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
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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).
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Heiko
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: So 04.01.09 16:50
Und wie sind die Tags getrennt? Mit Komma, Leerzeichen etc.?
|
|
Regan
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: 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 .
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?
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: 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 . Auch dafür muss es ja eine Lösung geben.
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 05.01.09 17:57
|
|
Regan
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: Mo 05.01.09 19:09
Nein . Das wusste ich gar nicht, dass ich das machen muss, bzw. war mir dem gar nicht bewusst. Jetzt verstehe ich auch die Fehlermeldung .
Danke für die Hilfe .
|
|