Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Keine Dubletten in Spalten (https://www.delphipraxis.net/54655-keine-dubletten-spalten.html)

Puddi 9. Okt 2005 00:36

Datenbank: Paradox • Zugriff über: ODBC?

Keine Dubletten in Spalten
 
Ahoi!

Ich habe gerade erst damit angefangen, mich in SQL einzuarbeiten. Ich bitte daher um Verständnis für die folgende blöde Frage.

Ich habe eine Verbdatenbank mit Namen "Temp" mit vier Spalten:

|Lemma|Context|Source|Speaker|
____________________________
|_____|_______|______|_______|
|_____|_______|______|_______|


In dieser Datenbank sind häufig doppelte Datensätze (d.h. Datensätze mit komplett gleichen Werten in allen Spalten) zu finden. Diese konnte ich bereits mit

Delphi-Quellcode:
SELECT DISTINCT UPPER(Lemma),Context,Source,Speaker FROM Temp
erfolgreich beseitigen.

Soweit so gut. In meiner Datenbank gibt es nun aber immer noch einige Datensätze, bei denen sich manche Werte in der Spalte "Lemma" gleichen. Die anderen Spalten weisen jedoch unterschiedliche Werte auf, z.B.

|Lemma|Context |Source|Speaker|
_____________________________
|gehen |X______|Y_____|Z______|
|gehen |1______|2_____|3______|
|gehen |A______|B_____|C______|
|laufen|f_______|e_____|f_______|
|essen |j_______|k_____|h______|

Wie kann ich den SQL-Befehl abändern, dass am Ende neben den anderen Verben nur noch eines der drei Verben "gehen" (welches ist egal) mit den dazugehörigen Werten für "B", "C" und "D" übrig bleibt? Jedes Lemma soll also maximal einmal in dieser Spalte vorkommen. :gruebel:

marabu 9. Okt 2005 08:27

Re: Keine Dubletten in Spalten
 
Hallo Puddi,

hast du einen Hintergrund in Computer-Linguistik oder bist du einfach nur sprachinteressiert? In jedem Fall solltest du dir ein SQL Tutorial durchlesen. Speziell die Normalisierung von Relationen ist für dich wichtig um dein jetziges Problem zu lösen. Die Google-Suchworte Tutorial und Normalisierung sollten dir eine Reihe von Treffern bringen.

Der Erfolg wird sein, dass du deine Tabelle aufteilen wirst. Eine Tabelle wird LEMMATA heißen und die Attribute ID und LEMMA besitzen. Die andere wird IRGENDWIE heißen und die Attribute CONTEXT, SPEAKER un SOURCE aufnehmen. Dazu kommen noch ein Primärschlüssel ID und ein Fremdschlüssel LEMMATA_ID, der auf das richtige Tupel in der Tabelle LEMMATA verweist. Die Primärschlüssel kannst du mit dem Feldtyp AUTOINC definieren.

Wenn du in deinem Beitrag Semigraphik unterbringen möchtest, dann sind die tags [.pre] und [./pre] ganz hilfreich - die Punkte musst du natürlich weglassen.

Grüße vom marabu

Puddi 9. Okt 2005 09:58

Re: Keine Dubletten in Spalten
 
Ach herrje, da kommt ja noch lecker Arbeit auf mich zu. Hatte gehofft, das liesse sich einfacher lösen :oops: . Dann werd ich mir Deinen Rat mal zu Herzen nehmen und mich zum Thema Normalisierung informieren.

P.S. Ich studiere Linguistik :wink: . Hab aber zu Computerlinguistik bisher noch nicht allzuviel gemacht (nur mal versuchsweise etwas PROLOG programmiert - macht aber nicht soviel Spaß wie Delphi :roll: ). Das Programm entsteht im Rahmen eines Forschungsprojektes zu irischen Verben. Es soll später mal dazu in der Lage sein, automatisch alle Verben innerhalb von Textkorpora des Irischen zu identifizieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz