WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 17.03.2003, 20:58   #1
irrsinn
Veteran
 
Registriert seit: 05.04.2002
Beiträge: 331


Standard bedingtes einfügen bei mysql

ich will mit php daten aus einem file auslesen und, sofern sie noch nicht in der datenbank gespeichert sind, sollen sie dort eingefügt werden.

konkret geht es um bibtex files. es sollen die autoren in einer tabelle gespeichert werden. dh es gibt viele daten, die doppelt und dreifach vorkommen. jeder autor soll aber nur einmal in die tabelle.

gibts da eine möglichkeit, dass mir der sql server die arbeit abnimmt und herausfindet, ob der autor schon gespeichert ist?
____________________________________
Wenn es dumm ist aber funktioniert, ist es nicht dumm!
irrsinn ist offline   Mit Zitat antworten
Alt 18.03.2003, 11:24   #2
reichr
Veteran
 
Registriert seit: 31.12.2002
Beiträge: 390


reichr eine Nachricht über ICQ schicken
Standard mysql

arbeitest du mit sql oder mysql?

naja, egal!
möglichkeiten gibts sicher dafür!

aber was anderes:
du sagst der author darf net öfter als 1mal vorkommen!? wie meinst du das genau??

wenn du den author nur 1 mal hast kommt ja nur 1 datenreihe zurück...

wenn du meinst der author soll nur 1 mal reingeschrieben werden (nicht öfter das man zB den author ein bischen anders schreibt oda so) dann würde ich ne 2. tabelle empfehlen wo nur die authoren drinnen stehen und die immer nur genau 1mal vorhanden sein dürfen! (kann man im feldtyp einstellen) dann holst du dir bei den anderen daten die authoren der 2. tabelle!

muss ma halt dann mit verknüpfungen usw. aufpassen!

weiß jetz nicht ob ich richtig liege, was du meinst!
____________________________________
lg


Chris
reichr ist offline   Mit Zitat antworten
Alt 18.03.2003, 11:29   #3
irrsinn
Veteran
 
Registriert seit: 05.04.2002
Beiträge: 331


Standard

es schaut so aus: in dem file sind alle möglichen bibtex records. dh wenn 2 publikationen den gleichen autor haben, kommt der im file natürlich 2 mal vor. ich will aber nicht bei jedem autor, den ich aus dem file parse zuerst überprüfen, ob er schon in der datenbank ist, und wenn nein ihn einfügen. das ist mit sicherheit die langsamste möglichkeit.
____________________________________
Wenn es dumm ist aber funktioniert, ist es nicht dumm!
irrsinn ist offline   Mit Zitat antworten
Alt 18.03.2003, 11:38   #4
reichr
Veteran
 
Registriert seit: 31.12.2002
Beiträge: 390


reichr eine Nachricht über ICQ schicken
Standard mysql

so...
jetz weiß i genau was du meinst

willst dies aber über php umsetzen so wie ichs jetz verstanden habe...
hilft das nicht wenn du die authoren extra über die datenbank in nen drop down menü ausgibst und ein extra feld machst falls der author nicht eingetragen ist diesen dann da einträgst?

dH ist er im drop down menü schon drinnen, dann nimm diesen wenn nicht tippe einen neuen ein !?

mein problem bei dieser sache ist - wenn man den author einmal so und einmal so schreibt! groß und kleinschreibung ev. noch nicht so tragisch aber vielleicht passiert mal ein tippfehler oder so!
____________________________________
lg


Chris
reichr ist offline   Mit Zitat antworten
Alt 18.03.2003, 11:51   #5
irrsinn
Veteran
 
Registriert seit: 05.04.2002
Beiträge: 331


Standard

du hast da noch immer was falsch verstanden. da gibts kein drop down menü. alles was passieren soll, ist die autoren von der datei in eine tabelle zu bringen. der user kann neue autoren nur hinzufügen, indem er ein neues bibtex file liefert.

das problem mit falsch geschriebenen autoren ist mir bewusst. damit muss ich vorerst leben. händisch möcht ichs nämlich bei diesen datenmengen nicht ausbessern. aber sofern die autoren im bibtex file richtig geschrieben sind, kann eh nix passieren
____________________________________
Wenn es dumm ist aber funktioniert, ist es nicht dumm!
irrsinn ist offline   Mit Zitat antworten
Alt 18.03.2003, 12:23   #6
Gonte
Veteran
 
Registriert seit: 15.08.2001
Alter: 51
Beiträge: 235


Standard

unter mysql könntest du das feld für den autorennamen als index festlegen und diesen index dann auf unique stellen. (was auch gross- und kleinschreibung abdecken würde). dann erhältst du eine fehlermeldung, falls der eintrag schon existiert. ("duplicate entry bla bla bla ...")

ansonsten wär dies ein klassischer fall für eine stored procedure. (falls die datenbak das unterstützt postgresql, mssql, ...)
Gonte ist offline   Mit Zitat antworten
Alt 18.03.2003, 14:11   #7
käptn
Inventar
 
Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150


Standard

UNIQUE INDEX über Name (wie schon wer geschrieben hat...)

und dann INSERT IGNORE ...

HTH

~
____________________________________
LOL - Mein erstes Post im Programmier Forum

MACINTOSH - Most Applications Crash, If Not The Operating System Hangs
käptn ist offline   Mit Zitat antworten
Alt 18.03.2003, 14:47   #8
irrsinn
Veteran
 
Registriert seit: 05.04.2002
Beiträge: 331


Standard

danke für die antworten!
____________________________________
Wenn es dumm ist aber funktioniert, ist es nicht dumm!
irrsinn ist offline   Mit Zitat antworten
Alt 20.03.2003, 09:20   #9
bev
Senior Member
 
Registriert seit: 22.05.2002
Beiträge: 155


Standard

hallo

ich hätte vielleicht noch eine idee,

im php gibts ne funktion

similar_text

die berechnet dir die ähnlichkeit von zwei strings

nun müsstest du dir einen prüfmechanismus basteln der zb
bei einer übereinstimmung bis zu 85% den satz nicht in die db schreibt,

so könntest du ev. auch gleich das problem mit anders geschriebenen namen abfangen.

ist sicher nicht die schnellste art, aber wenn die tippfehler oder sonstiges zu viel werden sicher eine alternative lösung

gruß

bev
bev ist offline   Mit Zitat antworten
Alt 20.03.2003, 09:54   #10
irrsinn
Veteran
 
Registriert seit: 05.04.2002
Beiträge: 331


Standard

hi! danke für den hinweis. so ähnlich war mein 1. ansatz auch. aber wenn ich mit php überprüfe, was schon alles in der datenbank steht, brauche ich entweder pro schreibvorgang vorher einen lesevorgang oder ich muss die ganzen autoren irgendwo als variable haben. wenn ichs nämlich so machen würde, bräuchte ich nicht die ähnlichkeit von 2 strings überprüfen, sondern ich könnte sie auf gleichheit testen.
____________________________________
Wenn es dumm ist aber funktioniert, ist es nicht dumm!
irrsinn ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:50 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag