SQL - Datenbanken auf Veränderung vergleichen
Hallo,
ich habe zwei Datenbanken(eine von 2021 und eine von 2022), in denen Gebiete einer PLZ zugeordnet werden, z.B.:
| PLZ | Gebiete |
|06870 | Schönebeck |
|29699 | Rotenburg |
Nun möchte ich sehen, welche Gebiete sich zur PLZ von 2021 zu 2022 verändert haben und welche PLZ ein Gebiet zugeordnet bekommen hat.
Mein Problem ist, ich bekomme nur die Gebiete ausgegeben, die sich verändert haben und nicht die wo einer PLZ ein Gebiet zugeordnet wurde.
Mein Code:
SELECT [Gebiete 2022].PLZ, [Gebiete 2021].Gebiet, [Gebiete 2022].Gebiet
FROM
[Gebiete 2022] LEFT JOIN [Gebiete 2021] ON [Gebiete 2022].PLZ = [Gebiete 2021].PLZ
WHERE
[Gebiete 2021].Gebiet= 'Null' and
[Gebiete 2022].Gebiet<>[Gebiete 2021].[Gebiet]
ORDER BY [Gebiete 2021].PLZ;
Hat jemand eine Idee wie ich alles ausgegeben bekomme?
ich habe zwei Datenbanken(eine von 2021 und eine von 2022), in denen Gebiete einer PLZ zugeordnet werden, z.B.:
| PLZ | Gebiete |
|06870 | Schönebeck |
|29699 | Rotenburg |
Nun möchte ich sehen, welche Gebiete sich zur PLZ von 2021 zu 2022 verändert haben und welche PLZ ein Gebiet zugeordnet bekommen hat.
Mein Problem ist, ich bekomme nur die Gebiete ausgegeben, die sich verändert haben und nicht die wo einer PLZ ein Gebiet zugeordnet wurde.
Mein Code:
SELECT [Gebiete 2022].PLZ, [Gebiete 2021].Gebiet, [Gebiete 2022].Gebiet
FROM
[Gebiete 2022] LEFT JOIN [Gebiete 2021] ON [Gebiete 2022].PLZ = [Gebiete 2021].PLZ
WHERE
[Gebiete 2021].Gebiet= 'Null' and
[Gebiete 2022].Gebiet<>[Gebiete 2021].[Gebiet]
ORDER BY [Gebiete 2021].PLZ;
Hat jemand eine Idee wie ich alles ausgegeben bekomme?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3378679327
Url: https://administrator.de/forum/sql-datenbanken-auf-veraenderung-vergleichen-3378679327.html
Ausgedruckt am: 19.03.2025 um 13:03 Uhr
10 Kommentare
Neuester Kommentar

Nur so aus der Hüfte geschossen und ohne dass ich mir das genauer angesehen habe:
Wenn man fehlende Bezüge ermitteln will, muss man meist "RIGHT JOINS" bemühen.
Wenn man fehlende Bezüge ermitteln will, muss man meist "RIGHT JOINS" bemühen.
Moin,
1. nutze die Code-Tags (=> <#code#> mein Code <#/code#> [nur ohne die Rauten in den eckigen Klammern])
2. Nimm ein
Dein Fehler war es zudem, dass du ein AND in deine Where Bedingung etabliert hast, du musst aber ein OR nutzen.
Gruß
em-pie
1. nutze die Code-Tags (=> <#code#> mein Code <#/code#> [nur ohne die Rauten in den eckigen Klammern])
2. Nimm ein
FULL OUTER JOIN
https://im-coder.com/was-ist-der-unterschied-zwischen-inner-join-und-out ...:SELECT
2022.PLZ as PLZ2022 , 2022.GEBIET as GEBIET2022
, 2021.PLZ as PLZ2022 , 2021.GEBIET as GEBIET2021
FROM [Gebiete 2022] as 2022
FULL OUTER JOIN [Gebiete 2021] as 2021
on 2022.PLZ = 2021.PLZ
WHERE 2021.GEBIET is NULL OR 2022.GEBIET <> 2021.GEBIET
ORDER BY 2021.PLZ
Dein Fehler war es zudem, dass du ein AND in deine Where Bedingung etabliert hast, du musst aber ein OR nutzen.
Gruß
em-pie
Moin,
die Info mit Access wäre im Ausgangspost ganz hilfreich gewesen
Probiere es einmal wie hier bescrieben: http://www.office-loesung.de/ftopic52680_0_0_asc.php
Es werden insgesamt zwei Queries benötigt, einmal mit einem
die Info mit Access wäre im Ausgangspost ganz hilfreich gewesen
Probiere es einmal wie hier bescrieben: http://www.office-loesung.de/ftopic52680_0_0_asc.php
Es werden insgesamt zwei Queries benötigt, einmal mit einem
LEFT JOIN
und einmal mit einem RIGHT JOIN
. Anschließend werden ebendiese mit einem UNION ALL
aneinander gehangen.
Zitat von @Selectet:
Mit NULL kommt auch das gleiche bei raus. Ich würde mich mal eher nach einer anderen DB-Software umsehen. Sind gute kostenloste Alternativen bekannt?
Mit NULL kommt auch das gleiche bei raus. Ich würde mich mal eher nach einer anderen DB-Software umsehen. Sind gute kostenloste Alternativen bekannt?
Ja.
Zitat von @Selectet:
Mit NULL kommt auch das gleiche bei raus. Ich würde mich mal eher nach einer anderen DB-Software umsehen. Sind gute kostenloste Alternativen bekannt?
Mit NULL kommt auch das gleiche bei raus. Ich würde mich mal eher nach einer anderen DB-Software umsehen. Sind gute kostenloste Alternativen bekannt?
MS SQL Express (SSMS kann auch Access MDBs abfragen) oder PostgreSQL.
Vergleichen ließe sich das noch mit EXCEPT falls Access das beherrscht, etwa so:
SELECT *
FROM [Gebiete 2022]
EXCEPT
SELECT *
FROM [Gebiete 2021]
UNION ALL
SELECT *
FROM [Gebiete 2021]
EXCEPT
SELECT *
FROM [Gebiete 2022]