如何使用where子句插入数据

时间:2014-03-02 16:13:15

标签: php sql postgresql insert

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?

谢谢:)

3 个答案:

答案 0 :(得分:0)

您可以使用SELECT语句编写填充目标表的INSERT语句。在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)

答案 1 :(得分: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?它变化了吗?如果不是IT必须。不要给不同的东西命名。

答案 2 :(得分: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;