0

Wir lernen über Datenbanken und für unseren Fall ist die Datenbank Oracle, in der Klasse werden wir gebeten, eine Einschränkung basierend auf den Informationen eines anderen Feldes in der Tabelle zu erstellen, und die Einschränkung sollte erstellt werden mit einem Fall nach innen, trotz eines groß nichts google-Suche für mich gearbeitet (wir arbeiten Spitze Online-Plattform Oracle), hier so ist, was wir zu tun gefragt wurden:Fall auf Einschränkung Oracle

Basierend auf dem acumuladoCompra Feld und Clasification Feld tun die folgenden:

Wenn die Klassifizierung A ist, muss die acumuladocompra weniger als $ 20.000 sein; wenn die Klassifizierung E ist, sollte die acumuladocompra zwischen $ 20,001 und $ 40,000 liegen; Wenn die Klassifizierung I ist, muss die acumuladocompra größer als $ 40,001 sein, aber weniger als $ 60,000; Wenn die Klassifizierung 0 ist, muss die acumuladocompra weniger als 80.000, aber mehr als 60.001 sein; sonst sollte es höher sein als $ 100.000

Also, wie könnte das gebaut werden?

Edit: Ich habe diesen Code versucht:

alter table "CLIENTES_152" add constraint "RESTRICCIONCLASIFICA" check (CASE when CLASIFICACION_152 = A THEN ACUMULADOCOMPRA_152 <20000; 
when CLASIFICACION_152 = E THEN ACUMULADOCOMPRA_152 BETWEEN 20001 AND 40000; 
when CLASIFICACION_152 = I THEN ACUMULADOCOMPRA_152 >40001 AND <60000; 
when CLASIFICACION_152 = O THEN ACUMULADOCOMPRA_152 >60001 AND <80000; 
when CLASIFICACION_152 = U THEN ACUMULADOCOMPRA_152 >100000; END) 

aber bekam

ORA-00905: Schlüsselwort fehlt

Was ist los?

+3

Es klingt viel wie Sie uns bitten, Ihre Hausaufgaben machen Leo. Ich googelte 'oracle case constraint' und der zweite Treffer war die offizielle Orakeldokumentation. Versuchen Sie das zu lesen und versuchen Sie es selbst, und kommen Sie zurück, wenn Sie eine bestimmte Frage haben. Lesen Sie zuerst [fragen] und viel Glück mit Ihrem Kurs. http://www.oracle.com/technetwork/issue-archive/o63asktom-082127.html –

+0

Hallo, ich danke Ihnen für Ihre Antwort, aber leider habe ich diese Informationen schon früher erreicht und es war nicht hilfreich, den Fall hinein zu bauen eine Einschränkung. Nur um klar zu sein, sind meine Hausaufgaben erledigt, da wir zwei Möglichkeiten hatten, CASE zu verwenden oder AND OR-Klauseln zu verwenden, aber AND OR war viel einfacher zu implementieren, aber da ich frustriert war, den CASE auszuprobieren, fragte ich mich, wie es gemacht werden könnte. weil die gefundenen Informationen nicht hilfreich waren. –

+0

@EngineerDollery Ich habe diesen Code versucht: alter table "CLIENTES_152" add Einschränkung "RESTRICCIONCLASIFICA" Kontrolle (CASE wenn CLASIFICACION_152 A THEN ACUMULADOCOMPRA_152 = <20000; wenn CLASIFICACION_152 = E DANN ACUMULADOCOMPRA_152 zwischen 20001 und 40000; wenn CLASIFICACION_152 = ich habe dann ACUMULADOCOMPRA_152> 40001 AND <60000; wenn CLASIFICACION_152 = O DANN ACUMULADOCOMPRA_152> 60001 AND <80000; wenn CLASIFICACION_152 = U DANN ACUMULADOCOMPRA_152> 100000; END) bekam aber ORA-00905: fehlendes Stichwort Was ist los? –

Antwort

0

An diejenigen, die versucht haben, mir zu helfen, danke.

nun, die endgültige Lösung für diese Einschränkung war:

alter table "CLIENTES_152" add constraint "RESTRICCIONCLASIFICA" 
CHECK ( 
(CASE when CLASIFICACION_152 = 'A' AND ACUMULADOCOMPRA_152 <20000 THEN 1 
when CLASIFICACION_152 = 'E' AND ACUMULADOCOMPRA_152 BETWEEN 20001 AND 40000 THEN 1 
when CLASIFICACION_152 = 'I' AND ACUMULADOCOMPRA_152 BETWEEN 40001 AND 60000 THEN 1 
when CLASIFICACION_152 = 'O' AND ACUMULADOCOMPRA_152 BETWEEN 60001 AND 80000 THEN 1 
when CLASIFICACION_152 = 'U' AND ACUMULADOCOMPRA_152 >100000 THEN 1 
ELSE 0 
END)=1 
); 

Wie Sie sehen können, was ich tat, war die Art und Weise zu ändern, die ich den Fall schreibe, so ist dies die Art und Weise geschrieben werden kann, und schließlich Es hat sehr gut funktioniert.

Vielen Dank für Ihre Tipps und Anregungen.

Hinweis: Ich bin nicht selbst zu der Lösung gekommen, es war jemand, der mir die richtige Art und Weise gesagt hat, wie die Abfrage erstellt werden musste!

Verwandte Themen