Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Knopf am Juni 16, 2017, 17:32:26

Titel: Zwei Tabellen vertikal zusammenfügen
Beitrag von: Knopf am Juni 16, 2017, 17:32:26
Hallo Experten!

Ich versuche mich wieder an einer Programmierung und komme nicht weiter :(
Ich will zwei Tabellen miteinander verbinden, die "teilweise verknüpft" sind. Für die zeilen, die nicht verknüpft sind soll der wert null gespeichert werden. Ein Beispiel:
Tabelle 1
Datum
01.01.17
02.01.17
03.01.17

Tabelle2
Datum          Wert
01.01.17         3
03.01.17         5

Zieltabelle
Datum          Wert
01.01.17         3
02.01.17         0
03.01.17         5

Ich würde die Tabelle gern über eine Abfrage zusammensetzten. Wie geht das? Vielen Dank für eure Hilfe!!
Lg
Titel: Re: Zwei Tabellen vertikal zusammenfügen
Beitrag von: MzKlMu am Juni 16, 2017, 18:11:57
Hallo,
ein LEFT JOIN sollte das können.
SELECT Datum, Nz([Tabelle2].[wert],0) AS Wert
FROM Tabelle1
LEFT JOIN Tabelle2
ON Tabelle1.Datum = Tabelle2.DatumTab2



PS:
Wert sollte man als Feldname nicht verwenden.
Titel: Re: Zwei Tabellen vertikal zusammenfügen
Beitrag von: Knopf am Juni 17, 2017, 10:35:42
Vielen Dank für deine Antwort. Leider funktioniert es nicht :( Ich bekomme Probleme mit dem tab2...Ich werde aufgefordert eine Parametereingabe zu machen. Wofür steht das tab2? Meine Recherche hat leider auch nichts ergeben :/
Titel: Re: Zwei Tabellen vertikal zusammenfügen
Beitrag von: MzKlMu am Juni 17, 2017, 10:38:41
Hallo,
Du musst natürlich die Feldnamen anpassen. Das Tab2 ist von mir nur einfach als Ergänzung für das Datum verwendet, damit man weiß, dass das das Datum aus Tabelle 2 ist.
Man tut sich übrigens viel leichter, wenn es in einer Datenbank über alle Tabellen keine gleichen Feldnamen gibt.

Die Abfrage ist getestet und funktioniert, wenn die Feldnamen stimmen bzw. angepasst sind.
Titel: Re: Zwei Tabellen vertikal zusammenfügen
Beitrag von: Knopf am Juni 17, 2017, 10:46:16
Hallo Klaus,

ja, ich habe unglückliche Beispielnamen gewählt, werde ich nächstes Mal anders machen^^
Ich habe die Feldnamen angepasst, aber dann sieht es bei mir so aus:

Datum           Wert
01.01.2017       1
                        0
03.01.2017       3


Die Spalte mit dem Datum bleibt leer...:(
Titel: Re: Zwei Tabellen vertikal zusammenfügen
Beitrag von: MzKlMu am Juni 17, 2017, 10:49:43
Hallo,
und warum zeigst Du jetzt nicht die Abfrage (SQL), wie sonst soll man da einen Fehler finden ?
Titel: Re: Zwei Tabellen vertikal zusammenfügen
Beitrag von: Knopf am Juni 17, 2017, 10:50:42
Ahh, ich habs jetzt - Dank deinem Tipp:

SELECT DatumTab1, Nz([Tabelle2].[wert],0) AS Wert
FROM Tabelle1
LEFT JOIN Tabelle2
ON Tabelle1.Datum = Tabelle2.DatumTab2

Die Feldnamen wieder....

VIELEN DANK, KLAUS!
Titel: Re: Zwei Tabellen vertikal zusammenfügen
Beitrag von: Beaker s.a. am Juni 17, 2017, 12:06:01
Hallo Knopf,
ZitatWert sollte man als Feldname nicht verwenden.
Auch "Datum" ist ein reserviertes Wort.
Und wenn man sich, auch bei einem so übersichtlichen SQL-String,
angewöhnt die Tabellen alle explizit zu benennen und vielleicht auch
noch Aliase verwendet, wird es bei grösseren Abfragen deutlich leichter.
Und auf die Suffixe kannst du auch verzichten, wenn du das Datumsfeld
der Bedeutung der Tabelle anpasst (habe ich im Beispiel nicht gemacht,
Benamsung also wie zuerst; -> ändern!).
SELECT T1.Datum, Nz(T2.Wert,0) AS Wert
FROM Tabelle1 AS T1
LEFT JOIN Tabelle2 AS T2
ON T1.Datum = T2.Datum


gruss ekkehard
Titel: Re: Zwei Tabellen vertikal zusammenfügen
Beitrag von: Lachtaube am Juni 17, 2017, 14:28:14
DATE - weil Datentype - ist ein in SQL reserviertes Wort - nicht aber die deutsche Übersetzung Datum. Datum wird bei Verwendung in einer Abfrage schließlich auch nicht eckig geklammert, wie das bei DATE und anderen reservierten Worten der Fall ist. Gleiches gilt auch für Wert, der als englischer Begriff VALUE ein reserviertes Wort darstellt.
Titel: Re: Zwei Tabellen vertikal zusammenfügen
Beitrag von: Beaker s.a. am Juni 17, 2017, 15:32:35
Danke.
Vielleicht sollte ich auch endlich mit einer englischen Access-Version arbeiten.  ;D