Zum Inhalt springen

SQL: Zählwerte tabellenübergreifend vergleichen


Haymaker84

Empfohlene Beiträge

Hallo Leute,

ich habe hier ein Problem, dass auf den ersten Blick (technisch!) nicht so schwer ist, ich habe nur keine Ahnung ob ich da jetzt Grundsätzlich falsch an die Sache rangehe...

Also, es geht um 2 Tabellen:

Tab1

-----

tab1regnr

tab1lfdnr

Tab2

-----

tab2regnr

tab2lfdnr

Der Join beider Tabellen funtzt über "tabXregnr" (bei beiden Tabellen FK). Die jeweils anderen Felder sind laufende Nummern. Bei "Tab2" werden der Reihe nach Datensätze eingefügt, d.h. die laufende Nummer geht immer weiter (1 - 2 - 3 - 4 usw.)...

Bei Bedarf wird ne "Kopie" des Datensatzes unter "Tab1" gespiegelt.

(Die Tabellen sind in der Realität umfangreicher, was aber hier nicht zur Sache zählt)

Da es fehler beim Befüllen der Tabellen gab, soll ich nun Konsistenzprüfungen durchführen. Eine Prüfung davon ist, ob es unter "Tab1" Datensätze gibt bei denen zu einer "regnr" eine höhere "lfdnr" vergeben wurde, als diese in "Tab2" existiert.

Beispiel:


Tab2

--------

lfdnr  regnr

----  ----

1      234

2      456

3      678


Tab1

--------

lfdnr  regnr

----  ----

10     234

Durch den zu hohen Wert "10" ist natürlich eine Inkonsistenz vorhanden! Jetzt bin ich auch bald mit meinem Latein am Ende... Ich hab zwei versuche gestartet: 1. ----------

SELECT DISTINCT

	tab2.regnr

FROM

	tab1 JOIN

	tab2 ON

	(tab1.regnr = tab2.regnr)

WHERE

	(SELECT MAX(lfdnr) FROM tab1)

	>

	(SELECT COUNT(lfdnr) FROM tab2)

GROUP BY

	m.regnr;

2. ----------

SELECT DISTINCT

	tab2.regnr

FROM

	tab1 JOIN

	tab2 ON

	(tab1.regnr = tab2.regnr),

	(SELECT MAX(lfdnr) FROM tab1) max1,

	(SELECT COUNT(lfdnr) FROM tab2) max2

WHERE

	max1 > max2

GROUP BY

	m.regnr;

Ich denke mein Hauptproblem ist, dass ich gerne MAX() und COUNT() für jede Teilergebnismenge vergleichen möchte (jeweils für eine "regnr"), bei meinem Ansatz jedoch immer der gesamte Bestand gezählt wird.

Kann mir jemand helfen über den Tellerrand zu schauen?!?!

:old

Bearbeitet von Haymaker84
Link zu diesem Kommentar
Auf anderen Seiten teilen

naja, so simpel meinte ich es nicht.

Aber tut mir leid, ich hab die Daten verfälscht wiedergegeben...

So ist es eigentlich gemeint gewesen:


Tab2

--------

lfdnr  regnr

----  ----

1      234

2      234

3      234

1      456

2      456

3      456

1      678

2      678

3      678

4      678


Tab1

--------

lfdnr  regnr

----  ----

10     234

1      456

3      678

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...