SQL Befehl (Duplikate kennzeichnen)

Cornerstone

Neuer Benutzer
Beiträge
2
Hey Leute,

ich habe das Problem das ich ein Formular speichern möchte in dem Kundennummer , ansprechpartner-id und eine Schulungsbezeichnung vorhanden sind. Ansich kein Problem. Nun soll access aber beim erneuten Speichern , anhand der Kundennummer und der Ansprechpartner id merken, das dieser Datensatz schon einmal vorhanden ist und dadurch die Schulungs-id (die nur in der Tabelle aber nicht im Formular enthalten ist) in 2 ändern. ( Speichere ich den selben Datensatz nochmal somit in 3) also im Prinzip ein counter für Duplikate mit der selben Kundennummer und Ansprechpartner - id...

Ich hoffe ich habe das so halbwegs verständlich erklärt :/ ist sowas möglich ?

Vielen Dank euch schon Mal :)
 
Werbung:
Du hast im Prinzip einen dreiteiligen Primärschlüssel denn Kundennummer und Ansprechpartner zusammen sind noch nicht eindeutig und dürfen doppelt vergeben werden. Ich habe keine Ahnung ob und wie man eine Art Autoincrement über drei Spalten in Access abbilden kann aber ich würde empfehlen die Spalte Schulungs-id durch einen eindeutigen, künstlichen Primärschlüssel zu ersetzen den du dann einfach seperat hoch zählst oder mit einer UID anlegst.
 
Vielen Dank für deine schnelle Antwort,

ich hab das Mal probiert aber das Problem ist selbst wenn ich eine neue Spalte anlege die hoch zählt... Wie bringe ich dieser bei das sobald sich die Ansprechpartner Id oder Kundenummer ändert sie wieder von 1 anfängt
 
Sie dürfte ja eben nicht bei 1 wieder anfangen sondern würde einen über die ganze Tabelle eindeutigen Primärschlüssel haben. Somit würde Access ohne Probleme den Datensatz aktualisieren oder eben einen neuen Datensatz erzeugen, was ich jetzt als dein Problem aufgefast habe.

Istzustand wäre doch:
Kundennummer, AnsprechpartnerID und SchulungsID bilden zusammen deinen Primärschlüssel wobei SchulungsID künstlich ist und vom Anwender nicht eingesehen werden kann. Die ersten beiden IDs sind allein nicht eindeutig, können also doppelt vorkommen.

Dann kannst du auch einen auf die ganze Tabelle eindeutigen PK schaffen und SchulungsID wegwerfen. Eine Reihenfolge für Primärschlüssel ist irrelevant.
 
ich glaube, der Fragesteller sucht sowas:

Code:
test=# create table cornerstone (kundennummer int, ansprechpartner int, bezeichnung text, schulung int default 1, primary key(kundennummer, ansprechpartner));
CREATE TABLE
test=*# select * from cornerstone ;
 kundennummer | ansprechpartner | bezeichnung | schulung
--------------+-----------------+-------------+----------
(0 rows)

test=*# insert into cornerstone (kundennummer, ansprechpartner, bezeichnung) values (1,2,'test1') on conflict (kundennummer,ansprechpartner) do update set bezeichnung=excluded.bezeichnung, schulung=cornerstone.schulung+1;
INSERT 0 1
test=*# select * from cornerstone ;
 kundennummer | ansprechpartner | bezeichnung | schulung
--------------+-----------------+-------------+----------
            1 |               2 | test1       |        1
(1 row)

test=*# insert into cornerstone (kundennummer, ansprechpartner, bezeichnung) values (1,2,'test1,1') on conflict (kundennummer,ansprechpartner) do update set bezeichnung=excluded.bezeichnung, schulung=cornerstone.schulung+1;
INSERT 0 1
test=*# select * from cornerstone ;
 kundennummer | ansprechpartner | bezeichnung | schulung
--------------+-----------------+-------------+----------
            1 |               2 | test1,1     |        2
(1 row)

test=*# insert into cornerstone (kundennummer, ansprechpartner, bezeichnung) values (2,3,'test2') on conflict (kundennummer,ansprechpartner) do update set bezeichnung=excluded.bezeichnung, schulung=cornerstone.schulung+1;
INSERT 0 1
test=*# select * from cornerstone ;
 kundennummer | ansprechpartner | bezeichnung | schulung
--------------+-----------------+-------------+----------
            1 |               2 | test1,1     |        2
            2 |               3 | test2       |        1
(2 rows)

test=*#

Das ist jetzt aber PostgreSQL.
 
Werbung:
Das wird es wohl so in Access nicht geben, jedenfalls nicht ohne mit VB da rum zu wurschteln.

Außerdem würde ich sagen das der PK (kundennummer,ansprechpartner,schulung) sein muss. So wie du es zeigst würden ja unterschiedliche Schulungseinheiten der selben Kundennummer (Organisation) und des selben Ansprechpartners (Person? Teilnehmer?) in einem Datensatz zusammen laufen und "Schulung" wäre nur ein Zähler. Aber vielleicht irre ich auch was die Struktur angeht.
 
Zurück
Oben