2014-03-02 43 views
0
create table cmu_patient 
( patient_id character varying(13) NOT NULL, 
    patient_hn character varying(7), 
    patient_fname character varying(50), 
    patient_lname character varying(50), 
    home_id   integer, 
    CONSTRAINT cmu_patient_pkey PRIMARY KEY (patient_id), 
    CONSTRAINT Fk_home FOREIGN KEY(home_id) 
    REFERENCES cmu_home(home_id) 
); 

create table cmu_treatment 
( treatment_id serial NOT NULL, 
    treatment_date date, 
    treatment_time time without time zone, 
    treatment_typecome character varying(100), 
    treatment_detail text, 
    patient_id character varying(13), 
    appointment_id character varying(5), 
    transfer_id character varying(5), 
    res_users_id integer, 
    CONSTRAINT cmu_treatment_pkey PRIMARY KEY (treatment_id), 
    CONSTRAINT Fk_patient FOREIGN KEY(patient_id) 
    REFERENCES cmu_patient(patient_id), 
    CONSTRAINT Fk_user_id FOREIGN KEY(res_users_id) 
    REFERENCES res_users(id) 
); 

$treatment_date = $GET_[...]; 
$treatment_time = $GET_[...]; 
$treatment_typecome = $GET_[...]; 
$treatment_note = $GET_[...]; 
$CID = $GET_[...]; 

如何插入數據的代碼--------這是不正確與在引起

INSERT INTO cmu_treatment(treatment_id, treatment_date, treatment_time, 
treatment_typecome, treatment_detail, patient_id, appointment_id,transfer_id, res_users_id) 
VALUES(NULL,'".$tratment_date."','".$treatment_time."','". 
$treatment_typecome."','".$treatment_note."','".$CID."',NULL,NULL,NULL) 
WHERE cmu_patient.patient_id = cmu_treatment.patient_id ; 

我認爲這是錯誤的


我不知道如果我想寫插入數據到表中與哪裏,因爲我應該寫入SQL?

謝謝:)

+0

如果你的行已經存在,則u使用update語句,而不是插入的 – Angelo

回答

0

我懷疑你真正想要的是一個update,改變現有的記錄現有值:

update cmu_treatment 
    set treatment_date = $treatment_date, 
     treatment_time = $treatment_time, 
     treatment_detail = $treatment_typecome, 
     treatment_note = $treatment_note 
    where patient_id = $CID; 

(我要離開了,前提是那些不應該真正改變NULL值。 )

如果你確實需要一個新的記錄,你可以這樣做:

INSERT INTO cmu_treatment(treatment_id, treatment_date, treatment_time, 
          treatment_typecome, treatment_detail, patient_id, appointment_id, 
          transfer_id, res_users_id 
         ) 
    select NULL,'".$tratment_date."', '".$treatment_time."','". 
      $treatment_typecome."','".$treatment_note."','".$CID."', NULL, NULL, NULL; 
0

你可以寫一個INSERT語句填充目標表的SELECT語句。在SELECT語句中,您可以使用WHERE條件。

所以不是這個查詢:

INSERT INTO table VALUES (....) 

你必須寫:

INSERT INTO table 
SELECT fields 
FROM anothertable 
WHERE condition 

在你的情況,我認爲你必須使用沒有WHERE條件,如果你想只插入一個行中的INSERT你的治療表。

告訴我,如果你想了解進一步的信息

編輯評論

後恕我直言,你的語句必須是:

INSERT INTO cmu_treatment 
(treatment_id, treatment_date, treatment_time, 
treatment_typecome, treatment_detail, patient_id, appointment_id, 
transfer_id, res_users_id) 
VALUES 
(NULL,'".$tratment_date."','".$treatment_time."', 
'".$treatment_typecome."','".$treatment_note."','".$CID."',NULL,NULL,NULL) 
+0

如果我已經重視不選擇列anothertable,我應該? – Beebrabie

+0

@Beebrabie:親愛的,你的目標是在治療臺上寫一行,用戶交互獲得的價值? –

+0

yess。你明白真實! – Beebrabie

0
INSERT INTO `cmu_treatment`(`treatment_id`, `treatment_date`, `treatment_time`, 
`treatment_typecome`, `treatment_detail`, `patient_id`, `appointment_id`,`transfer_id`, `res_users_id`) 
VALUES(NULL,'".$tratment_date."','".$treatment_time."','". 
$treatment_typecome."','".$treatment_note."','".$CID."',NULL,NULL,NULL) 
WHERE `cmu_patient.patient_id` = `cmu_treatment.patient_id` ; 

而且你不需要(表名)。(列)。 這是內部「」?如果是,那麼你不需要'「。$ tratment_date。」'你只能使用'',所以你的代碼看起來像這樣。

INSERT INTO cmu_treatment(treatment_id, treatment_date, treatment_time, 
treatment_typecome, treatment_detail, patient_id, appointment_id,transfer_id, res_users_id) 
VALUES(NULL,'$tratment_date','$treatment_time',' 
$treatment_typecome','$treatment_note','$CID',NULL,NULL,NULL) 
WHERE `patient_id` = patient_id ; 

最後什麼是patient_id?它是可變的嗎?如果不是,它必須是。不要給同一個名字不同的東西。

相關問題