Ich habe diese Frage. Lassen Sie uns die Abfrage sehen:SQL Server bedingte Abfrage für ein Master-Detail Abfrageergebnis
Dies ist eine typische Master-Detail-Tabelle (Document-DocumentVersion). A Document
kann einen oder mehrere DocumentVersions
oder keine haben. Ein DocumentVersion
-Status kann PUBLISHED
oder UNPUBLISHED
sein. Die PUBLISHED
eine DocumentVersion
kann nur einmal für eine Document
existieren (dies wird von der Anwendung gesteuert), aber es gibt viele UNPUBLISHED
, oder alle DocumentVersions
sind UNPUBLISHED
. NICHT PUBLISHED
existiert nicht, es ist nur ein Wort im Abfrageergebnis, wenn es keinen DocumentVersion
Datensatz für eine Document
gibt, das ist der Grund für die LEFT JOIN
.
Also meine Frage ist: Wie kann ich die Abfrage die nächsten Regeln ausführen lassen?
Wenn ein
DocumentVersion
ZustandPUB
ist, ignorieren die anderen, ich meine, zeigen nicht dieUNP
diejenigen im Abfrageergebnis für dieseDocument
Wenn ein
DocumentVersion
Zustand istUNP
(und hier kann sein vieleUNP
), zeigen dann nur die mit dem höchsten DatumUnpublish
(DocumentVersion
Tabelle hat eineUnPublishDate
Spalte), diese Regel nur gilt, wenn es keinePUB
DocumentVersion
für das Dokument ist
Ich würde mich über jede Hilfe freuen, die Sie mir geben können, danke Jungs.
Mit Ihrem Ansatz zeigt der 'UNP' den Status mit dem niedrigsten UnPublishedDate und ich brauche den höchsten, außerdem brauche ich die Fälle, wenn DocumentVersion für ein Dokument nicht existiert, aus diesem Grund benutze ich den LEFT JOIN. –
Oh, ich glaube, Gordon hat gerade '' UnPublishDate desc 'vom Ende seiner Bestellung verpasst und musste stattdessen einen linken Outer Join machen. Meine Abfrage ist ziemlich gleich –
@VorpulusLyphane. . . Vielen Dank. –