Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Zwei Tabellen vertikal zusammenfügen

Begonnen von Knopf, Juni 16, 2017, 17:32:26

⏪ vorheriges - nächstes ⏩

Knopf

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

MzKlMu

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.
Gruß Klaus

Knopf

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 :/

MzKlMu

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.
Gruß Klaus

Knopf

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...:(

MzKlMu

Hallo,
und warum zeigst Du jetzt nicht die Abfrage (SQL), wie sonst soll man da einen Fehler finden ?
Gruß Klaus

Knopf

#6
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!

Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Lachtaube

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.
Grüße von der (⌒▽⌒)

Beaker s.a.

Danke.
Vielleicht sollte ich auch endlich mit einer englischen Access-Version arbeiten.  ;D
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)