Mehrere Keywords abfragen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • fireweasel
    antwortet
    Zitat von SusiSorglos Beitrag anzeigen
    Naja, ich habe es eh nicht verstanden.
    Was war daran unverständlich? Ich fand die Erklärungen im MySQL-Handbuch durchaus anfängerfreundlich ...

    Also habe ich es nochmal mit Explode(,) und dann die SQL-Abfrage in einer foreach zusammen gebastelt. Das funktioniert!
    Du fragtest explizit nach Alternativen zu PHP-Basteleien mit String-Funktionen.

    Ich dachte nur, das gibt es was von Hause aus, was vielleicht schneller/besser ist.
    Ja gibt es:
    Ich habe zwei Lösungswege aufgezählt.
    Hell hat dir den letzteren der beiden empfohlen.

    Zitat von h3ll Beitrag anzeigen
    Davon würde ich absehen. Das würde bedeuten, dass man die Tabellenstruktur zur Laufzeit verändern muss. ...

    Der SET-Type sollte nur für Werte verwendet werden, die sich zur Laufzeit niemals verändern und nur in Form von neuen Datenbank-Deployments aktualisiert wird.
    Ausgehend von ...
    Zitat von SusiSorglos
    ich habe verschiedene Nachrichten (News) denen ich EIN Keyword zuweise.
    ... sehe ich die Menge der Keywords als wenig veränderlich an.

    Dass die Keywords beim Anlegen der Tabelle festgelegt werden müssen, ergibt sich aus dem ersten Satz des Handbuch-Artikels zum Set-Datentyp (MySQL):

    Zitat von MySQL
    A SET is a string object that can have zero or more values, each of which must be chosen from a list of permitted values specified when the table is created.
    Besser wäre es eine Tabelle mit Keywords anzulegen.
    Nicht ohne Grund hatte ich zwei Links mit ein paar Dutzend alternativen Implentierungen fürs Keyword-Tagging ohne Set-Typen angehängt ...
    Zuletzt geändert von fireweasel; 17.03.2015, 21:21. Grund: typo

    Einen Kommentar schreiben:


  • h3ll
    antwortet
    Zitat von SusiSorglos Beitrag anzeigen
    Naja, ich habe es eh nicht verstanden. Also habe ich es nochmal mit Explode(,) und dann die SQL-Abfrage in einer foreach zusammen gebastelt. Das funktioniert!
    Ja, "funktioniert". Aber ist der falsche Weg und wird dir früher oder später große Probleme machen.

    Zitat von SusiSorglos Beitrag anzeigen
    Ich dachte nur, das gibt es was von Hause aus, was vielleicht schneller/besser ist.
    Ja, gibts. Nennt sich Normalisierung.

    Einen Kommentar schreiben:


  • SusiSorglos
    antwortet
    Naja, ich habe es eh nicht verstanden. Also habe ich es nochmal mit Explode(,) und dann die SQL-Abfrage in einer foreach zusammen gebastelt. Das funktioniert! Ich dachte nur, das gibt es was von Hause aus, was vielleicht schneller/besser ist.

    Dennoch THX

    Einen Kommentar schreiben:


  • h3ll
    antwortet
    Davon würde ich absehen. Das würde bedeuten, dass man die Tabellenstruktur zur Laufzeit verändern muss. Dadurch kommt man irgendwann in Teufels Küche.

    Der SET-Type sollte nur für Werte verwendet werden, die sich zur Laufzeit niemals verändern und nur in Form von neuen Datenbank-Deployments aktualisiert wird.

    Besser wäre es eine Tabelle mit Keywords anzulegen.

    Einen Kommentar schreiben:


  • fireweasel
    antwortet
    Zitat von SusiSorglos Beitrag anzeigen
    Hallo zusammen,

    ich habe verschiedene Nachrichten (News) denen ich EIN Keyword zuweise.
    Im Frontend lasse ich diese Nachricht nun ausgeben und lasse gleichzeitig nach News suchen die das gleiche Keyword besitzen. Das funktioniert auch ohne Probleme. Jetzt möchte ich das ganze etwas erweitern so das ich mehrere Keywords in ein Feld eintrage und jedes durch Komma separierte Wort soll abgefragt werden.

    Also z.B. "telefon, bell, telekom" ...
    Für diesen Zweck haben Datenbanken den Datentyp "Set" (Menge). MySQL kennt den auch: MySQL :: MySQL 5.7 Reference Manual :: 11.4.5 The SET Type

    Falls die Datenbank keinen Set-Typ hat oder dieser nicht genug "Keywords" für deine Aufgabenstellung bereitstellt, gibts auch nicht-triviale Lösungen:
    * Then each went to his own home - Tags: Database schemas
    * sql - Database Design for Tagging - Stack Overflow

    Einen Kommentar schreiben:


  • SusiSorglos
    hat ein Thema erstellt Mehrere Keywords abfragen.

    Mehrere Keywords abfragen

    Hallo zusammen,

    ich habe verschiedene Nachrichten (News) denen ich EIN Keyword zuweise.
    Im Frontend lasse ich diese Nachricht nun ausgeben und lasse gleichzeitig nach News suchen die das gleiche Keyword besitzen. Das funktioniert auch ohne Probleme. Jetzt möchte ich das ganze etwas erweitern so das ich mehrere Keywords in ein Feld eintrage und jedes durch Komma separierte Wort soll abgefragt werden.

    Also z.B. "telefon, bell, telekom"

    Ich würde das ganze jetzt mit Explode anhand der "Kommas" teilen und jeden Fund in einer WHILE durch eine SQL Abfrage schicken.
    So würde es auf jeden fall funktionieren, nur das ganze ist doch sicherlich sehr resourcenfressend. Ist mein Vorgehen so richtig oder könnte ich es irgendwie (viel) besser machen?

    Cu SusiSorglos
Lädt...
X