Saya cuba mencari cara untuk dapat mengemas kini kod unit untuk mana-mana produk unit baharu, tetapi simpan kod unit asal untuk produk unit yang telah dibuat.
Iaitu, jika kod unit bertukar antara topik yang disediakan, saya mahu kod unit mencerminkan kod yang tepat pada masa kursus unit dibuat.
Ini borang saya
CREATE TABLE Units ( UnitsID INT(10) AUTO_INCREMENT, UnitsName VARCHAR(255) NOT NULL, UnitsCode VARCHAR(20) NOT NULL UNIQUE, PRIMARY KEY (UnitsID) ); CREATE TABLE UnitsOffering ( UOfferingID INT(10) AUTO_INCREMENT, UOUnits INT(10) NOT NULL, YIIntake VARCHAR(255) NOT NULL, YIYear INT(4) NOT NULL, PRIMARY KEY (UOfferingID), FOREIGN KEY (UOUnits) REFERENCES Units(UnitsID) );
Saya boleh mengemas kininya menggunakan prosedur tersimpan semasa, tetapi apabila saya menyenaraikan produk unit dan butiran unit, ia mencerminkan kod unit baharu, bukan kod yang ada dalam pangkalan data semasa produk dibuat.
CREATE PROCEDURE UpdateUnit(IN vUnitsID VARCHAR (255), IN vUnitsCode VARCHAR (20)) BEGIN UPDATE Units SET UnitsCode = vUnitsCode WHERE UnitsID = vUnitsID; END;
Ini adalah pernyataan pilihan yang saya gunakan semasa membuat senarai.
SELECT O.UOfferingID, U.UnitsCode, U.UnitsName, O.YIIntake, O.YIYear FROM (UnitsOffering O INNER JOIN Units U ON O.UOUnits = U.UnitsID) ORDER BY O.UOfferingID;
Saya tidak pasti sama ada ini sebenarnya boleh dilakukan. Jika itu masuk akal, saya tidak pasti sama ada terdapat sesuatu yang salah dengan cara jadual saya disediakan, pernyataan kemas kini atau pernyataan senarai.
Sebarang bantuan amat kami hargai. Saya cuba melihat beberapa dokumentasi untuk melihat cara melakukan ini tetapi tidak menemui kata kunci yang betul.
Berikut adalah contoh perkara yang saya harap dapat saya senaraikan. Untuk contoh ini, perkara yang saya mahu ia paparkan jika kod unit berubah selepas 2021 berakhir.
COS10000 - Introduction to Programming - Semester 2 2021 INF30011 - Database Implementation - Semester 1 2022 COS10059 - Introduction to Programming - Semester 2 2022
Terdapat dua kaedah yang mungkin: