Ergebnis 1 bis 6 von 6

Thema: Datenbank Suche mit gleich mehr werten

  1. #1
    Anfänger
    Registriert
    Apr 2022
    Beiträge
    5
    Gefällt mir!
    1
    Du gefällst: 2

    Datenbank Suche mit gleich mehr werten

    Hallo Szeneboxler

    Vielleicht könnt ihr mir weiterhelfen.

    Ich habe eine Datenbank und ich will in einer Tabelle nach bestimmten Wörtern suchen. Bei der suche ergibt sich ja folgende SQL Abfrage

    SELECT * FROM `video` WHERE `title` REGEXP 'Home'

    Das funktioniert einwandfrei, nur wenn ich dutzende Wörter habe nachdem gesucht werden soll, dauert es länger.
    Jetzt wollte ich wissen ob ich die suche so erweitern, das bei der Abfrage gleich nach mehr Wörtern gesucht werden kann und ausgeben wird.

    Beispiel:
    SELECT * FROM `video` WHERE `title` REGEXP 'Home'
    SELECT * FROM `video` WHERE `title` REGEXP 'Sweet'
    SELECT * FROM `video` WHERE `title` REGEXP 'Christmas'


    Leider funktioniert dies nicht und kann nicht bearbeitet werden in der SQL Abfrage. Jetzt war halt meine Idee, ich frage euch dazu und vielleicht kann jemand helfen




  2. #2
    Senior
    Registriert
    Jun 2015
    Beiträge
    691
    Gefällt mir!
    225
    Du gefällst: 409
    Na einfach mit AND

    SELECT * FROM `TABELLE` WHERE `Feld1` REGEXP '%inhalt%' AND `Feld2` REGEXP '%inhalt%' AND `Feld3` REGEXP '%inhalt%'
    2 Tipps dazu:

    Nimm für solche Abfragen am besten Pphpmyadmin. Das hat ne Suche und wenn du dir das da zusammenklickst wie du es brauchst dann schmeisst er auch den fertigen Query mit aus den du dann weiterbenutzen kannst.

    Oder

    nimmt Chatgpt dafür, das hat sich bei sowas als echt hilfreich erwiesen. Also einfach die Struktur reinhauen und nach passenden Querys fragen bzw deine kaputten verbessern lassen

  3. #3
    Senior Avatar von Nimbus
    Registriert
    Oct 2015
    Beiträge
    587
    Gefällt mir!
    110
    Du gefällst: 605
    Deine Anfrage benutzt (aktuell) überflüssigerweise "REGEXP".
    Für derartige Anfragen ist LIKE in Kombination mit '%' vermutlich geeigneter/performanter.
    Also quasi:
    Code:
    WHERE `title` LIKE '%Home%'
    Überflüssig ist REGEXP hier einfach, weil du eigentlich keine wirkliche Regular-Expression hinschreibst, sondern einen festen Sub-String.

    Lösungsansatz 1: Mehrere Bedingungen mit LIKE statt REGEXP
    Prinzipiell könnte man nun einfach mehrere Bedingungen schreiben und verlangen, dass alle eingehalten werden.
    Code:
    SELECT * FROM `video` WHERE 
        `title` LIKE '%Home%' 
    AND `title` LIKE '%Sweet%' 
    AND `title` LIKE '%Christmas%'
    Lösungsansatz 2:
    Alternativ können wir auch wieder REGEXP aus der Schublade holen und dort mit regulären Ausdrücken beschreiben was gesucht wird. Wie das konkret aussehen könnte hängt aber stark von deinen Anforderungen an das Suchverhalten ab und ist auch nicht super zugänglich, wenn man noch nie damit gearbeitet hat.

    Lösungsansatz 3:
    Eine Software nutzen, die sich speziell auf das Suchen spezialisiert (z.B. Elasticsearch oder Sphinxsearch). Mit diesen Tools lassen sich schöne Dinge umsetzen. Allerdings könnte ich mir vorstellen, dass das noch etwas zu anspruchsvoll für dich ist.

  4. Diesen Mitgliedern gefällt dieser Beitrag:


  5. #4
    Anfänger
    THEMENSTARTER


    Registriert
    Apr 2022
    Beiträge
    5
    Gefällt mir!
    1
    Du gefällst: 2
    Hab es nun mit diesem Lösungsansatz versucht...jedoch erhalte ich hier kein ergebnis

    Code:
    SELECT * FROM `video` WHERE 
        `title` LIKE '%Home%' 
    AND `title` LIKE '%Sweet%' 
    AND `title` LIKE '%Christmas%'
    Hab es dann mit der phpmyadmin-suche probiert und statt REGEXP, LIKE versucht, nur hier erhalte ich auch kein Ergebniss wenn ich nach zb. Home suche. Daher habe ich bisher Manuel bei jeder suche mit REGEXP machen müssen.

    _MySQL lieferte ein leeres Resultat zurück (d.h. null Datensätze). (Die Abfrage dauerte 0.0765 Sekunden.)_

    Ansich, habe ich nur 75 Wörter, die in der Tabelle Videos gesucht werden muss und in Spalte Title, aber wenn man mit einer vorgefertigtern SQL Lösung gleich alles finden könnte und auf anhieb löschen, erleichtert es dann doch etwas die arbeit.

    Vielleicht mach ich was falsch, daher versuch ichs mit all euren Idee oder...vielleicht hab ich nur nen Punkt oder nen Strich vergessen

  6. #5
    Senior
    Registriert
    Jun 2015
    Beiträge
    691
    Gefällt mir!
    225
    Du gefällst: 409
    Zitat Zitat von AndyTh Beitrag anzeigen
    Hab es dann mit der phpmyadmin-suche probiert und statt REGEXP, LIKE versucht, nur hier erhalte ich auch kein Ergebniss wenn ich nach zb. Home suche. Daher habe ich bisher Manuel bei jeder suche mit REGEXP machen müssen.

    Also ich habe keine Ahnung warum du nichts findest aber ein ellenlangen Query bauen mit bis zu 75 Wörtern fühlt sich für mich falsch an. Dann nimm lieber ein Array

    SELECT * FROM deineTabelle WHERE Spalte LIKE ANY (ARRAY['%Wert1%', '%Wert2%', '%Wert3%', '%Wert4%', ...])

    Generell hätte es mit Like klappen müssen.

  7. #6
    Junior
    Registriert
    Apr 2021
    Beiträge
    79
    Gefällt mir!
    70
    Du gefällst: 79
    Volltextsuche wäre für sowas eigentlich das Mittel der Wahl: https://dev.mysql.com/doc/refman/8.0...t-boolean.html
    Geht allerdings nicht mit jeder Engine.

Ähnliche Themen

  1. (Sonstige) - SUCHE Datenbank Script ähnlich wie Discogs.org oder Musik-sammler.de
    Von zelly im Forum Entwicklung / Programmierung
    Antworten: 8
    Letzter Beitrag: 26.08.2020, 19:14
  2. Fernstudium gleich normales Studium?
    Von SkippyMcDonald im Forum Business Daily Talk & OffTopic
    Antworten: 5
    Letzter Beitrag: 26.09.2018, 12:17
  3. Suche Streaming CMS Script - Private Datenbank
    Von Frank.A im Forum Webmaster Daily Talk & OffTopic
    Antworten: 4
    Letzter Beitrag: 09.02.2017, 13:21
  4. Linux Mint wurde über WordPress gehackt – und zwar gleich doppelt
    Von RedDevil im Forum Datenschutz & Privatsphäre (IT-Security)
    Antworten: 0
    Letzter Beitrag: 24.02.2016, 16:58

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
SzeneBox.org... im Mittelpunkt der Szene!
© since 2015 szeneBOX.org - All Rights Reserved
Domains: www.szenebox.org