Ich habe ein Problem mit einer SQL-Datenbank, die ich mit Oracle 11g Express Edition einrichten. Ich möchte in der Lage sein, eine SELECT-Abfrage auszuführen, in der ich für jeden Kunden die Nummer des Kunden und die Summe aller Kredittransaktionen des Kunden (Transaktionen mit einer Art "C") für Konten anzeigen möchte, die eine offene haben Status.Abfrage über mehrere Tabellen und Zeilen/Spalten
Problem ... Ich habe die verschiedenen Arten von Query-Befehlen angeschaut und ich bin völlig verloren, wie ich diesen Befehl in den einfachsten Begriffen formatieren sollte. Jede Hilfe wäre willkommen. Hier ist meine Tabellenformatierung:
CREATE TABLE Customer_DML
CustomerNumber CHAR(12) CONSTRAINT customer_pk PRIMARY KEY,
SSN CHAR(9) CONSTRAINT customer_uq_ssn UNIQUE,
FirstName VARCHAR2(25) CONSTRAINT customer_nn_fname NOT NULL,
LastName VARCHAR2(25) CONSTRAINT customer_nn_lname NOT NULL,
Telephone CHAR(10),
DateOfBirth DATE
);
CREATE TABLE Account_DML (
AccountNumber CHAR(15) CONSTRAINT account_pk PRIMARY KEY,
Type CHAR(1) CONSTRAINT account_ck_type CHECK (Type IN ('S','C')),
DateCreated DATE DEFAULT SYSDATE CONSTRAINT account_nn_datecreated NOT NULL,
Status VARCHAR2(10) CONSTRAINT account_nn_status NOT NULL,
Customer CHAR(12) CONSTRAINT account_fk_customer REFERENCES
Customer_DML(CustomerNumber)
ON DELETE CASCADE
);
CREATE TABLE Transaction_DML (
TransactionNumber CHAR(15) CONSTRAINT transaction_pk PRIMARY KEY,
Type CHAR(1) CONSTRAINT transaction_ck_type CHECK (Type IN ('D','C')),
Amount Number(10,2) CONSTRAINT transaction_nn_amount NOT NULL,
Account CHAR(15) CONSTRAINT transaction_fk_account REFERENCES Account_DML(AccountNumber)
ON DELETE SET NULL
);
Was habe ich bisher ist in dieser Richtung:
SELECT c.CustomerNumber,
t.SUM(Amount) AS SumAmt
FROM Customer_DML c, Account_DML a
ON c.CustomerNumber = a.Customer
JOIN Transaction_DML t
ON a.Customer = a.AccountNumber
Aber ich habe das Gefühl, dass ich wirklich mit diesem off base bin.
Alle Hinweise oder Lösungen würden sehr geschätzt werden. Wenn Sie mehr Informationen benötigen, würde ich gerne geben, was ich kann.
Wenn Sie die "Account-Tabelle" verwenden, meinen Sie Account_DML oder die Account-Spalte? Ich habe versucht, dies in meine Befehlszeile einzufügen und erhalte mehrere Fehler. – Smackelbap
Und wenn ich das korrigiere "Account_DML" bekomme ich einen Fehler in Zeile 5, wo es "C" heißt. "Kunde": ungültige Kennung. – Smackelbap
Ich habe eine Bearbeitung mit Korrekturen eingereicht. Versuchen Sie, c.Customer zu a.Customer sowohl in der Auswahl als auch in der Gruppe zu ändern. –