ich die folgende Abfrage haben:LEFT JOIN Beitritt nicht mit einem einzelnen Datensatz
Insert into cet_database.dbo.termData
(
termID,
studentID,
course,
[current],
program,
StbyCurrentClassID,
class,
classCode,
cancelled
)
Select
fm_stg.classByStudent_termData_assessmentData.termID,
fm_stg.classByStudent_termData_assessmentData.studentID,
fm_stg.classByStudent_termData_assessmentData.class_code,
case when fm_stg.classByStudent_termData_assessmentData.[current] = 'Yes' then 1 else 0 end,
fm_stg.classByStudent_termData_assessmentData.program,
fm_stg.classByStudent_termData_assessmentData.classByStudentID,
fm_stg.classByStudent_termData_assessmentData.class,
fm_stg.classByStudent_termData_assessmentData.classID,
case when fm_stg.classByStudent_termData_assessmentData.cancelled_flag = 1 then 1 else 0 end
From fm_stg.classByStudent_termData_assessmentData left outer join termData
On fm_stg.classByStudent_termData_assessmentData.class_code = termData.course
and fm_stg.classByStudent_termData_assessmentData.termID = termData.termID
and fm_stg.classByStudent_termData_assessmentData.studentID = fm_stg.classByStudent_termData_assessmentData.studentID
Where termData.StbyCurrentClassID is null
Ich verwende die Abfrage von Daten in eine Staging-Tabelle aus einer anderen Datenbank zu importieren (fm_stg.classByStudent_termData_assessmentData
), bevor es in meiner Datenbank die Tabellen importieren. Diese bestimmte Abfrage ist Teil einer größeren gespeicherten Prozedur, die Daten in mehrere Tabellen importiert, die sich auf termData
beziehen.
Wenn ich den Sproc ausführen, bekomme ich den Datensatz in fm_stg.classByStudent_termData_assessmentData
eingefügt, aber nicht in termData
. Ich füge nur einen Datensatz ein, wenn ich dieses Problem habe, aber es funktioniert für die 10.000 Datensätze, die ich zuvor gemacht habe. Ich verwende den linken Join, um festzustellen, was bereits in der Tabelle meiner Datenbank vorhanden ist und was nicht, und nehme dann die relevanten Datensätze aus der Staging-Tabelle. Jedoch mit diesem Datensatz:
316a, 39520, DEC 10, Yes, DEC10, 105713, DEC 10 (18), 6078, NULL, 2
Die Auswahl gibt nichts zurück - warum ist das? Der Datensatz existiert definitiv nicht in meiner termData
Tabelle und Datensätze einfügen in alle meine anderen Tabellen aus der Staging-Tabelle. Der Sproc führt alle Einfügungen in einer Transaktion aus, um genau dieses Szenario zu vermeiden, in dem Datensätze in einigen Tabellen und nicht in anderen Tabellen eingefügt werden, aber es scheint nicht zu funktionieren.
Nun, der einzige Grund, den Datensatz nicht zu erhalten, sollte die WHERE-Klausel sein. Entfernen Sie es und führen Sie die geänderte Auswahlabfrage aus, um zu sehen, was Sie unerwartet erhalten. –
Können Sie eine SQL-Fiddle erstellen, die das Problem reproduziert? Ich sehe nichts falsch mit der Abfrage. –
@TabAlleman Ich habe versucht, es in SQL Fiddle zu erstellen (was ich vorher nicht verwendet habe), aber kann nicht für das Leben von mir bekommen es zu tun, z. Erstelle eine Tabelle. BEARBEITEN: es scheint nicht in Firefox zu funktionieren ... wird eine Demo erstellen. – Ben