2Danke
ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
2904
2904
EMPFEHLEN
-
Guten Morgen ihr,
Ich bin neu hier und schon fast am verzweifeln bei der Arbeit.
Momentan bin ich dabei eine Bestandsdatenbank für unsere Tape Library in C# zu programmieren und hab schon die halbe Tischkante abgekaut weil diese blöde Datenbank nicht das ausspuckt was ich sehen will.
Aber zu meinem Problem:
Ich habe eine Access-Datenbank mit 2 Tabellen.
Eine davon ist eine "lokale" und die andere eine verknüpfte Tabelle welche direkt aus der Tape Library _liest_, da der Treiber nur ein improvisierter Treiber vom Hersteller ist und keinen schreibenden Zugang freigibt.
Nun brauch ich eine SQL-Anweisung die mir alle Datensätze aus der lokalen Tabelle ausgibt, welche _nicht_ in der verknüpften Tabelle sind.
Beispiel:
Tabelle 1 (lokal)
a
b
c
d
e
Tabelle 2 (verknüpft)
a
c
d
f
Ausgabe
b
e
Ich habs versucht mit 2 SELECTs die sich mit einem EXCEPT ausschließen, nem LEFT OUTER JOIN aber ständig krieg ich Fehlermeldungen:
Entweder
-System.Data.OleDB.OleDBException (0x80004005): IErrorInfo.GetDescription failed with E_FAIL(0x80004005) beim EXCEPT oder
-System.Data.OleDB.OleDBException (0x80040E21): Verknüpfung über Memo-, OLE- oder Hyperlinkobjekt (tabelle1.spalte1 = tabelle2.spalte1) nicht möglich.
Die SQL-Anweisungen sind vom Quellcode her auf jeden Fall korrekt, soviel ist sicher.
Ich hab eigentlich nicht vor die beiden Spalten erst in Arrays einzulesen und dann auszuwerten, das ist mir ehrlich gesagt zu umständlich für so eine "kleine" Abfrage.
Muss ich irgendwas bei der Einbindung der Datenbank in Access beachten oder habe ich noch andere Möglichkeiten die Tabelle in mein Projekt einzubinden?
Danke im Voraus
ash_ol
-
Code sql:
1 2 3
SELECT T1.Field1, T2.Field1 FROM T1 LEFT JOIN T2 ON T1.Field1 = T2.Field1 WHERE T2.Field1 IS NULL;
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Danke für die schnelle Antwort.
Leider funktioniert diese Anweisung nicht, bis auf die WHERE-Klausel hatte ich ja auch so eine Anweisung.
Fehler:
-System.Data.OleDB.OleDBException (0x80040E21): Verknüpfung über Memo-, OLE- oder Hyperlinkobjekt (tabelle1.spalte1 = tabelle2.spalte1) nicht möglich.
-
Wenn gar nichts hilft, kannst du es auch mit der Brutalo-Methode versuchen:
Das DISTINCT kannst du weglassen, wenn Field1 ein eindeutiger Schlüssel ist.Code sql:1 2 3 4
SELECT Field1 FROM T1 WHERE Field1 NOT IN ( SELECT DISTINCT Field1 FROM T2 )
Vielen Dank für die Nutzung des Bewerten- und Danke-Buttons
Wenn man sieht, dass man einen anderen glücklich gemacht hat, ist die Welt um zwei glückliche Menschen reicher.
-
=(
Geht immer noch nicht. Aber zumindes hab ich einen anderen Fehlercode jetzt:
-System.Data.OleDB.OleDBException (0x80040E21): Ungültiges Memo- oder OLE-Objekt in Unterabfrage ('T1.Field1').
Nach der Mittagspause kommt nochmal so ein Dipl.-Dr.-Dr. der sich wohl den ganzen Tag mit SQL und so beschäftigt.
Vielleicht kann der mir helfen. Werds dann auch reinschreiben.
Trotzdem danke für die Antwort.
-
O, du willst memo-Felder vergleichen. Dazu sind Memo-Felder aber nicht da!
du solltest sie in Strings wandeln wenn sie nicht grösser als 255 Zeichen sind.---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Wenn deine Datenbank zu Verwechslungen neigt, dann gib die Tabellennamen einfach mit an.
Code sql:1 2 3 4
SELECT T1.Field1 FROM T1 WHERE T1.Field1 NOT IN ( SELECT DISTINCT T2.Field1 FROM T2 )
Vielen Dank für die Nutzung des Bewerten- und Danke-Buttons
Wenn man sieht, dass man einen anderen glücklich gemacht hat, ist die Welt um zwei glückliche Menschen reicher.
-
Verdammt das kann ich nicht. Wie gesagt der Treiber für die ODBC-Datenbank ist rein standardisierter ODBC-Treiber sondern solch einer der nur lesen kann.
Mit ändern is da nichts. Ich denke nicht das die Admins mich hier am Produktivsystem rumspielen lassen. =D
Das hab ich bereits getan, hilft aber auch nichts. =((
Ich wer jetzt einfach die Tabelle 2 in eine dritte Tabelle (TMP) kopieren und dann die Abgleiche fahren.
Kann ich denn die Einträge in den Memofeldern auf Datenbankebene einfach in ein Stringfeld kopieren?
EDIT: Habs jetzt hinbekommen! Einfach vor jeder Abfrage die verknüpfte Tabelle in eine TMP-Tabelle kopiert und von dort aus die Abgleiche fahren! DankeGeändert von ash_ol (13.04.10 um 13:44 Uhr)
Ähnliche Themen
-
PHP + MYSQL - Falls Datensatz in Tabelle nicht enthalten, diesen dann anlegen
Von poelchen1337 im Forum PHPAntworten: 11Letzter Beitrag: 14.11.09, 10:20 -
[mysql] Daten aus Tabelle auslesen, die nicht in einer anderen enthalten sind
Von esprit1st im Forum Relationale DatenbanksystemeAntworten: 5Letzter Beitrag: 13.09.07, 15:22 -
right join - datensatz anzeigen der nicht an anderer tabelle ist
Von Shooter2k im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 22.09.06, 19:35 -
Forumlar Überprüfung, ohne zuwissen welche Felder enthalten sind
Von mtk-flo im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 19.07.05, 14:03 -
Datensätze aus tabelle A welche nicht in tabelle B sind anzeigen
Von JohannesProgrammiert im Forum Relationale DatenbanksystemeAntworten: 5Letzter Beitrag: 19.05.04, 14:36





Zitieren


Login





