Forums Neueste Beiträge
 

Wie verknüpfe ich Daten in 2 Tabellen über Zeichenkettenteile (z.B. Rechnungscode)

28/02/2010 - 18:54 von NicoN | Report spam
Hi NG,
seit làngerem scheitere ich an einem vertrackten Problem:

Tbl_Auftraege enthàlt zahllose Daten, u.a. ein Feld mit einem Rechnungscode,
bestehend aus der Jahreszahl und einer 5-stelligen Zahl, z.B. 2010-02155.

Tbl_Einnahmen enthàlt Buchungsdaten eines Kontos, also Betrag, Valuta und
Verwendungszweck.

Ziel meiner Bemühungen ist es, Datensàtze aus Tbl_Auftraege mit Datensàtzen
aus Tbl_Einnahmen zu verknüpfen und zwar so, dass ich den Rechnungscode im
Feld Verwendungszweck wiederfinde. Das wird kompliziert dadurch, dass der
Verwednungszweck meistens weitaus mehr Daten enthàlt als meinen
Rechnungscode.

In zweiter linie soll dann die DatensatzID, Betrag und Valuta in
Tbl_Auftraege aktualisiert werden.

Ein erster Entwurf einer solchen Abfrage enthielt Tbl_Einnahmen.DatensatzID,
Tbl_Einnahmen.Verwendungszweck.
Als Kriterium habe ich für den Verwendungszweck "LIKE '*' & [Tbl_Auftraege]
& '*' " eingegeben. Das beschert mir über 65000 Zeilen - völliger
Schwachsinn.

Das Hinzufügen von DISTINCT zum SQL-Text reduziert die Anzahl der Zeilen auf
1760 - genau die Anzahl der Datensàtze in Tbl_Einnahmen.

Füge ich zur Abfrage jetzt noch das Feld Tbl_Autraege.ID hinzu und gebe als
Kriterium "Nicht NULL" an, dann bekomme ich eigentlich das perfekte
Ergebnis.
Jede Zeile enthàlt Daten aus Tbl_Einnahmen und Daten aus dem
korrespondierenden DS der Tbl_Auftraege.
Leider làsst sich auf diese Weise nichts in der Tbl_Auftraege aktualisieren.

Die Grafik dieser ABfrage enthàlt übrigens keine Verknüpfungspfieile.

Wahrscheinlich ist mein Ansatz grundverkehrt - aber wie geht das ?


Gruss Nico
 

Lesen sie die antworten

#1 Peter Doering
28/02/2010 - 21:31 | Warnen spam
Hallo,

NicoN wrote:

Tbl_Auftraege enthàlt zahllose Daten, u.a. ein Feld mit einem Rechnungscode,
bestehend aus der Jahreszahl und einer 5-stelligen Zahl, z.B. 2010-02155.

Tbl_Einnahmen enthàlt Buchungsdaten eines Kontos, also Betrag, Valuta und
Verwendungszweck.

Ziel meiner Bemühungen ist es, Datensàtze aus Tbl_Auftraege mit Datensàtzen
aus Tbl_Einnahmen zu verknüpfen und zwar so, dass ich den Rechnungscode im
Feld Verwendungszweck wiederfinde. Das wird kompliziert dadurch, dass der
Verwednungszweck meistens weitaus mehr Daten enthàlt als meinen
Rechnungscode.



Verknuepfen geht in diesem Fall nur per WHERE-Klausel, nicht per JOIN:

SELECT ...
FROM Tbl_Auftraege AS A, Tbl_Einnahmen AS E
WHERE B.Verwendungszweck LIKE "*" & A.RechnungsCode & "*"

In zweiter linie soll dann die DatensatzID, Betrag und Valuta in
Tbl_Auftraege aktualisiert werden.



Jo, geht auch bei dem Konstrukt. Musst halt den Typ auf
Aktualisierungs-Abfrage aendern.

Ein erster Entwurf einer solchen Abfrage enthielt Tbl_Einnahmen.DatensatzID,
Tbl_Einnahmen.Verwendungszweck.
Als Kriterium habe ich für den Verwendungszweck "LIKE '*' & [Tbl_Auftraege]
& '*' " eingegeben. Das beschert mir über 65000 Zeilen - völliger
Schwachsinn.



Klar, wenn du den Tabellen- statt Feldnamen angibst ;-)

Gruss - Peter

Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

Ähnliche fragen