Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo Leute, über die Suchfunktion hab ich leider nichts passendes gefunden, also schlagt mich bitte nicht falls es doch schon mal gefragt wurde ;-)

Ich möchte in einer Tabelle Artist und Title zu MP3s speichern.

z.B. Queen, Flash

Disturbed, Stupify

usw.

Das speichern selbst der Daten ist kein Problem. Nun soll man aber über eine Suchfunktion auf einer Webseite nach entsprechenden Liedern suchen können.

Um Tippfehler ausschließen zu können, verwende ich momentan folgenden Code um die passenden Lieder zu finden:


SELECT * FROM `lieder` 

WHERE SOUNDEX(artist)=SOUNDEX('$artist') 

AND SOUNDEX(title)= SOUNDEX('$title')

Das funktioniert auch soweit ganz gut und ignoriert einige Tippfehler. Nun ist die Frage, kann ich in einem INSERT-Statement eine Bedingung einbauen? So dass, wenn ein neues Lied für die Datenbank vorgeschlagen wird, ein ähnliches aber schon existiert, der Eintrag nicht erstellt wird? Die ersten Versuche in der Richtung sahen so aus:

SELECT CASE (SELECT * FROM `lieder` 

WHERE SOUNDEX(artist)=SOUNDEX('$artist') 

AND SOUNDEX(title)= SOUNDEX('$title')) 

WHEN 0 THEN

(INSERT INTO lieder (artitst,title) VALUES ('$artist','$title'))

ELSE END;

Bin ich da evtl schon auf dem richtigen Weg? Ich würde die Abfrage halt einfach gerne in ein Statement packen. Ich freue mich über jede Antwort und Danke schon mal ;-)

Geschrieben

Hallo,

wie wärs, wenn Du einen zusammengesetzten Primary Key auf Artist und Titel legst. Wenn Du beim Insert eine Fehlermeldung erhältst, weil der Datensatz schon vorhanden ist, kannst Du diese Fehlermeldung nutzen, um sie als Vorschlag auszugeben.

Gruß

Heike

Geschrieben
So dass, wenn ein neues Lied für die Datenbank vorgeschlagen wird, ein ähnliches aber schon existiert, der Eintrag nicht erstellt wird?

Nein das geht nicht. Allerdings ist deine Datenbank nicht normalisiert, denn der Künstlername sollte in einer eigenen Tabelle abgelegt werden. Dann kannst Du z.B. auch eine Auswahlliste anbieten aus der der User auswählen kann. Aber solange Du ein Freitextfeld anbietest, wirst Du immer damit leben müssen, dass ein falsch geschriebener Name in die DB kommt.

Hier noch was zum Thema Normalisierung. Dort ist es passenderweise auch schon am Beispiel einer Musikdatenbank erklärt.

Dim

Geschrieben

Danke für die schnellen Antworten. Zum Thema Normalisierung hab ich mir schon einiges in der Uni anhören dürfen/müssen. Wollte es nur über den Weg erst mal versuchen. Aufsplitten der Tabelle und dann mit entsprechenden Primär-/Sekundärschlüsseln versehen ist nicht das Problem.

War aber so wie es gerade aussieht ein Denkfehler meinerseits :upps Danke nochmal. Hat sich damit erledigt :)

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...