PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Increment eines Feldes



eagle0899
10-07-2007, 22:19
Hallo

Ich möchte mein Problem an einem Beispiel erläutern.

Ich habe folgende Tabelle:

create table worte ("Name" varchar(20), "Anzahl" INT);

Die Tabelle ist am Anfang leer. Nun möchte ich, sagen wir mal von einem dicken E-Book, alle vorkommenden Worte in die Tabelle eintragen und bei wiederholten Auftreten zählen.

In Perl mit DB_File ist dies ein Einzeiler:

$worte{$wort}++;

Gibt es eine elegante Möglichkeit, so etwas mit SQL (z.B. mysql) zu realisieren?

Gruß Bernd

mwanaheri
11-07-2007, 07:43
Die schnellste Möglichkeit dürfte sein, eine Tabelle mit der Spalte wort zu erstellen, da alles reinzupacken und dann auf einen View zuzugreifen, der sich aus 'select wort,count(wort) from tabelle group by wort' ergibt. Schnell allerdings nur in der implementierung.

elrond
11-07-2007, 09:59
update worte set Anzahl=Anzahl+1 where Name='<wort>'

tschloss
11-07-2007, 10:02
update worte set anzahl=anzahl+1 where name="dieseswort";

elrond
11-07-2007, 10:05
hihi, erster :p

tschloss
11-07-2007, 11:17
hihi, erster :p

Blödes Telefon :D

eagle0899
11-07-2007, 15:08
update worte set Anzahl=Anzahl+1 where Name='<wort>'

Und es läuft super. Danke!

Allerdings nur, wenn '<wort>' bereits vorhanden ist. So muß erst abgefragt werden, ob das Wort bereits vorhanden. Wenn nicht, muß erst ein insert ausgeführt werden.

In Perl ist das alles inklusive.

Gruß Bernd

Jasper
11-07-2007, 21:13
Und es läuft super. Danke!

Allerdings nur, wenn '<wort>' bereits vorhanden ist. So muß erst abgefragt werden, ob das Wort bereits vorhanden. Wenn nicht, muß erst ein insert ausgeführt werden.


kennt mysql MERGE?

-j

mwanaheri
12-07-2007, 07:56
laut en.wkipedia.org heißt das bei MySQL 'replace':
http://dev.mysql.com/doc/refman/5.1/en/replace.html

dort wird allerdings eine andere Syntax empfohlen:
http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html

Das ist wohl das, was hier gebraucht ist.

eagle0899
13-07-2007, 11:43
laut en.wkipedia.org heißt das bei MySQL 'replace':
http://dev.mysql.com/doc/refman/5.1/en/replace.html

dort wird allerdings eine andere Syntax empfohlen:
http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html

Das ist wohl das, was hier gebraucht ist.

Genau das ist das, wonach ich gesucht habe. Aber leider nur bei mysql möglich.

Nochmals Danke

Bernd

mwanaheri
13-07-2007, 13:30
für andere Datenbanken ist (denke ich) MERGE zuständig (vgl. Beitrag von Jasper) Ich hatte nur aus irgendeinem Grund angenommen, dass es sich um MySQL handelt.