Ich mache einen äußeren Join und habe ihn erfolgreich in der informix
Datenbank ausgeführt, aber in meinem Code wird die folgende Ausnahme angezeigt:
DataTable dt = TeachingLoadDAL.GetCoursesWithEvalState(i, bat);
Einschränkungen konnten nicht aktiviert werden. Eine oder mehrere Zeilen enthalten Werte, die gegen Nicht-Null-, Eindeutigkeits- oder Fremdschlüsseleinschränkungen verstoßen.
Ich kenne das Problem, aber ich weiß nicht, wie ich es beheben soll.
Die zweite Tabelle, für die ich den Outer Join mache, enthält einen zusammengesetzten Primärschlüssel, der in der vorherigen Outer Join-Abfrage null ist.
BEARBEITEN:
SELECT UNIQUE a.crs_e, a.crs_e || '/ ' || a.crst crs_name, b.period,
b.crscls, c.crsday, c.from_lect, c.to_lect,
c.to_lect - c.from_lect + 1 Subtraction, c.lect_kind, e.eval, e.batch_no,
e.crsnum, e.lect_code, e.prof_course
FROM rlm1course a, rfc14crsgrp b, ckj1table c, mnltablelectev d,
OUTER(cc1assiscrseval e)
WHERE a.crsnum = b.crsnum
AND b.crsnum = c.crsnum
AND b.crscls = c.crscls
AND b.batch_no = c.batch_no
AND c.serial_key = d.serial_key
AND c.crsnum = e.crsnum
AND c.batch_no = e.batch_no
AND d.lect_code= e.lect_code
AND d.lect_code = ....
AND b.batch_no = ....
Das Problem tritt bei der Tabelle auf cc1assiscrseval
. Der Primärschlüssel lautet (batch_no, crsnum, lect_code).
Wie kann ich dieses Problem beheben?
BEARBEITEN:
Laut @PaulStock
Rat: Ich mache, was er gesagt hat, und ich bekomme:
? dt.GetErrors () [0] {System.Data.DataRow} HasErrors: true ItemArray: {object [10]} RowError: "Spalte 'eval' erlaubt DBNull.Value nicht."
Also löse ich mein Problem, indem ich es ersetze e.eval
, NVL (e.eval,'') eval
und dies löst mein Problem. Vielen Dank.
,e.eval,e.batch_no,e.crsnum,e.lect_code,e.prof_course
aus der Abfrage entferne , geht alles in Ordnung. Was ist das Problem bitte.