MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > SQL
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 10.01.2018, 11:13   #1
mb-ing
Neuer Benutzer
Neuer Benutzer
Cool T-SQL : MSSQL 2008 - SQL Server 2008 R2: Datenblätter mit inkorrekter Historie finden (Dok <=> Historie)

Hallo zusammen,

ich habe wieder eine Frage und würde mich freuen, wenn Ihr mir Hilfestellung geben könntet.

Grundsätzlich habe ich wieder zwei Tabellen.
Eine Tabelle DOCUMENTS mit einer Auflistung von Dokumenten und eine Tabelle HISTORY, in der die Versionierungen etc. festgehalten werden.
Eine Verknüpfung beider wird über den Eintrag PARENT_ID gewährleistet.
Zum besseren Verständnis habe ich eine Excel-Tabelle angehängt.

Nun, möchte ich alle versionierten Datenblätter (Dokumente: IDENT endet mit '-DB') finden, bei denen die Historie nicht korrekt gepflegt wurde.

Folgende Codes habe ich bisher generiert und liefern auch das gewünschte Ergebnis:

Code1:
Code:

select D.IDENT, max(D.REVISION) as Max_REVISION
from DOCUMENTS D
inner join HISTORY H on (D.ID=H.PARENT_ID and H.DESCRIPTION collate Latin1_General_CS_AS not in ('01-%','02-%','10-%'))
where IDENT collate Latin1_General_CS_AS like '%-DB'
group by D.IDENT
having Count(D.IDENT)>1
order by D.IDENT
Code2:
Code:

select D.IDENT, max(D.REVISION) as Max_REVISION
from DOCUMENT D, VIEW_HISTORY H
where D.ID=H.PARENT_ID
and H.DESCRIPTION collate Latin1_General_CS_AS not in ('01-%','02-%','10-%')
and IDENT collate Latin1_General_CS_AS like '%-DB'
group by D.IDENT
having Count(D.IDENT)>1
order by D.IDENT
Code3:
Code:

select IDENT, max(REVISION) as Max_REVISION
from HISTORY
where DESCRIPTION collate Latin1_General_CS_AS not in ('01-%','02-%','10-%')
and IDENT collate Latin1_General_CS_AS like '%-DB'
group by IDENT
having Count(IDENT)>1
order by IDENT
Anmerkung:
Die SQL-Abfrage wird in MS SQL Server Management Studio erstellt, aber später in einem anderen Programm verwendet, das keinen INNER JOIN verarbeiten kann.
Deswegen bin ich von Code 1 auf Code 2 gekommen.
Code 3 liefert das Gleiche, aber mir nur einer Tabelle
Da bin ich erst später draufgekommen ^^

Ich verwende die Abfrage in einem anderen Programm, das nur Ergebnisse in der Tabelle DOCUMENTS darstellen kann (ist halt leider so ...)

Meine Frage:
Wie kann ich von den obigen Abfragen die erhaltene Spalte IDENT in einer weiteren Abfrage verarbeiten?

Das heißt, dass ich die erstellte Abfrage noch in eine weitere Frage einbetten muss, also:
Code:

select IDENT
from DOCUMENTS
where IDENT in (
Obige Abfrage oder Beliebige Abfrage)
Vielen Dank im Voraus für Eure Bemühungen.
Ich bin für jeden Tipp dankbar und stehe für Nachfragen immer gerne zur Verfügung.

Danke und Grüße
MB-Ing.
Angehängte Dateien
Dateityp: xlsx Bsp_SQL_Doc_History.xlsx (11,4 KB, 2x aufgerufen)
mb-ing ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.01.2018, 08:50   #2
mb-ing
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Cool Lösung :)

Hallo zusammen,

nach langem probieren und tüfteln konnte ich einen funktionierenden Code generieren.

Code:

select *
from DOCUMENTS
where ID in (
select B.ID
from DOCUMENTS B,
HISTORY_DOCUMENT A,
(select A.IDENT, MAX(A.REVISION)as REVISION 
from HISTORY_DOCUMENT A 
group by A.IDENT
having COUNT(A.IDENT)>1) as NewA
where A.PARENT_ID = B.ID
and A.IDENT = NewA.IDENT 
and A.REVISION = NewA.REVISION
and B.IDENT like '%-DB'
and A.SHORT_DESC collate Latin1_General_CS_AS not like '01-%'
and A.SHORT_DESC collate Latin1_General_CS_AS not like '02-%' 
and A.SHORT_DESC collate Latin1_General_CS_AS not like '10-%'
oder by B.IDENT)
Danke und Grüße
MB-Ing.
mb-ing ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:23 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.