bernau Geschrieben 29. Oktober 2008 Teilen Geschrieben 29. Oktober 2008 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 ;-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
heike2008 Geschrieben 29. Oktober 2008 Teilen Geschrieben 29. Oktober 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 29. Oktober 2008 Teilen Geschrieben 29. Oktober 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bernau Geschrieben 29. Oktober 2008 Autor Teilen Geschrieben 29. Oktober 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.