Jump to content

verknüpfungsproblem bei Access *dringend*

Empfohlene Beiträge

Hallo zusammen,

ich habe zwei Tabellen (eine .csv und eine .xls)

Beide dieser Tabellen haben Vertragsnummern, welche auch in beiden Tabellen auftauchen. Jedoch gibt es in beiden Tabellen auch Nummern, die in der anderen nicht auftauchen.

Nun möchte ich eine Übersicht aller Nummern die in jeweils nur einer Tabelle auftaucht.

Beispiel:

Tabelle 1:

Spalte A Spalte B Vertragsnummer

dsdd dsdd 1234

xcxc sccs 23434

Tabelle 1: Spalte A Spalte B Vertragsnummer

dsdd dsdd 1234

xcxc sccs 23445

Nun soll die 23434 und die 23445 aus beiden Tabellen angezeigt werden, da ich beide nur einmal habe.

Ich bekomme es über die Verknüpfungseigenschaften nur einseitig hin (also LEFT / RIGHT JOIN)...

Kann mir bitte jemand schnell weiterhelfen?

Vielen Dank im Voraus :)

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo,

in Oracle würde ich mit zwei select Statements mit der Vertragsnummer basteln und die beiden Mengen mittels dem Befehl "MINUS" voneinander abziehen. Als Ergebnis erhält man die Nummern die in der anderen Menge nicht enthalten sind.

Frank

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

was meinst du mit "in einem ersten Schritt"? Wenn du genau ein Select-Statement meinst, dann geht das meiner meinung nach nicht.

robotta hats vorgemacht. in oracle heißt es "minus", im SQL Server heißts "except". wie der befehl in Access heißt, muss man nachschauen.

SELECT * FROM TableA

EXCEPT

SELECT * FROM TableB

resultat:

Die Werte, die jeweils nicht in der anderen Tabelle sind.

grüße

EDIT: dabei ist es egal, in welcher reihenfolge man die tabellen nennt.

bearbeitet von delen

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Mh, naja ich habs jetz erstmal anders gemacht und nur einen Left Join benutzt.

habe nun diese Abfrage1 erstellt. Das Ergebnis sieht so aus:


Tabelle1.Kobi1     Tabelle2.Kobi2

1234                1234 

24334

43425               43425

44344

Also gibt es nicht zu allen Nummern aus der ersten Tabelle identische Nummern in der zweiten. Nun möchte ich mit einer Abfrage die Zeilen in der Tabelle 1 löschen, die in der Tabelle 2 nicht vorkommen. In diesem Beispiel also 24334 und 44344. Wie sieht nun aber der DELETE-Befehl aus, da ich ja einmal die Abfrage verwenden muss, aber die Zeilen aus der Ursprungstabelle löschen will... Dachte irgendwie so:

DELETE FROM Tabelle1 INNER JOIN Abfrage1 ON Tabelle1.Kobi1=Abfrage1.Kobi1

WHERE Abfrage1.Kobi2 IS NULL;

Gruß

bearbeitet von manuel1987

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

ich würds mit einer unterabfrage versuchen:

DELETE FROM Tabelle1 

where vertragsnummer in 

(select tabelle1.auftragsnummer 

from tabelle1 left join tabelle2 on tabelle1.vertragsnummer = tabelle2.vertragsnummer 

where tabelle2.vertragsnummer is null);

--> also einfach nur deinen join in den where-clause.

wobei ich echt nicht versteh warum du es nicht mit nem Expect bzw. Minus etc. machst.

grüße

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo,

danke für die bisherige Hilfe.

Leider sagt mir Access beim Ausführen des DELETE, dass das Löschen aus der angegebenen Tabelle nicht möglich ist.

An was kann das liegen? Die Tabelle ist werder schreibgeschützt noch sonst was. Kann das an vorhandenen Beziehungen liegen?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

ich arbeite leider nicht mit access, aber spontan würd ich sagen: ja, es liegt an vorhandenen beziehungen, die auf die zu löschenden Datensätze verweisen.

greifen denn andere Tabellen mit Fremdschlüsseln auf die Datensätze dieser Tabelle zu?

wenn ja, dann gibt es (zumindest im SQL Server, aber bestimmt auch in Access) die Möglichkeit, die Löschweitergabe eines Datensatzes einer Tabelle zu bestimmen.

Beispielsweise kannst du bei der Definition einer Tabelle im SQL-Server bestimmen, dass alle anderen Datensätze aus anderen Tabellen, die auf die zu löschenden Datensätze verweisen ebenfalls gelöscht werden (oder alternativ diese jeweilige Fremdschlüsselspalte auf "NULL" gesetzt wird).

Im SQL Server heißt der Zusatz: "On Delete Cascade"

Falls du willst, dass die verweisenden DS mitgelöscht werden, dann such am besten in der Access-Hilfe nach "Cascade". Da wird sich bestimmt etwas finden.

grüße

PS: solltest du nicht so viel wert auf die referenzielle Integrität legen, dann reicht auch ein Löschen der Beziehung zwischen zwei referenzierten Tabellen. (Würde ich aber nicht empfehlen ^^... gibt nur Chaos)

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

nich so kompliziert denken ;)

wenn du das so loeschen willst kannst du einfach

  

DELETE FROM 

  tabelle1

WHERE 

 tabelle1.vertragsnummer IN 

  (SELECT tabelle2.vertragsnummer FROM tabelle2)

machen. ist allerdings mysql syntax.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hey,

das Problem ist, dass es sich um eine verknüpfte Excel-Tabelle handelt, in der Datensätze gelöscht werden sollen.

Dies funktioniert aber nicht, nur bei einem Import der Tabelle.

Ich kann die Tabelle aber nicht importieren, da die Formeln und Formatierungen sonst verschwinden...

Weiß jemand weiter?

Gruß

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Probier mal mit folgendem Ansatz weiter zu machen:

- Zufügen eine Spalte in Excel, die die Zeilennummer enthält

- Programmieren eines Makros in Excel, das Zeile Nummer Zeilennummer löscht

- In Access ein Modul schreiben, das:

1. die Tabellen ausliest(inkl. Zeilennummer) (in Recordset)

2. vergleicht wie bereits oben beschrieben

3. das Excel-Makro (oder auch VB-Modul) mit Übergabe der zu löschenden Zeilennummer ausführt

4. Das ganze so lange macht, bis keine zu löschenden Zeilen mehr vorhanden sind

Alternativ gibts eventuell einen Weg, ein Array aller Zeilennummern zu übergeben, das würde eine Schleife sparen. Zu Details müsstes Du google bemühen^^

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Nimm an der Diskussion teil

Du kannst jetzt hier posten und Dich später registrieren. Wenn Du bereits über eine Konto verfügst, melde Dich jetzt an, um mit Deinem Konto zu posten.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.


Fachinformatiker.de, 2020 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung