【发布时间】:2019-04-06 23:16:49
【问题描述】:
我正在创建一个存储过程来生成属性调查。
它首先接收property id 输入。
然后,它会在我的survey 表中插入一个新调查,其中包含自动递增的survey id,以及相应的property id 输入。
最后,该过程执行一系列选择和连接,并检索与相关property 中的property type 关联的所有questions。
这不是相关部分,因为它运行完美且顺利。
因此,在此之前,我的存储过程插入了调查,并显示了一个表格,其中有一列 question_description,其中行中包含该属性调查的所有问题。这是代码:
DELIMITER //
CREATE PROCEDURE GenerateSurvey (IN input INT)
BEGIN
INSERT INTO survey (property_id, cas_eval_id, checksum_xxx)
VALUES
(input, 'CAS-XXX-YYYY', 123);
SELECT subquery.question_description
FROM (
SELECT question.question_description,
property_type_question.property_type_id
FROM property_type_question
JOIN question
ON property_type_question.question_id = question.id
ORDER BY question.id
) AS subquery
JOIN property
ON subquery.property_type_id = property.property_type_id
WHERE property.id = input;
END //
DELIMITER ;
问题在于,除了显示的问题之外,我现在还想显示所述问题所属的调查 ID。 所以要做到这一点,我正在尝试这个:
DELIMITER //
CREATE PROCEDURE GenerateSurvey (IN input INT)
BEGIN
INSERT INTO survey (property_id, cas_eval_id, checksum_xxx)
VALUES
(input, 'CAS-XXX-YYYY', 123);
SELECT survey.id AS 'Survey ID',
subquery.question_description
FROM (
SELECT question.question_description,
property_type_question.property_type_id
FROM property_type_question
JOIN question
ON property_type_question.question_id = question.id
ORDER BY question.id
) AS subquery
JOIN property
ON subquery.property_type_id = property.property_type_id
WHERE property.id = input;
END //
DELIMITER ;
所以 MySQL 无法识别 survey.id。
但是survey.id 确实存在。它只是被插入到上面的同一个查询中,它只是没有出现在代码中,因为它是我的survey 表的自动递增主键。
那么我如何保持我的程序的能力:
- 插入调查
- 显示调查问题
并使其能够同时显示调查的 ID 以及问题?
我正在使用 Uwamp 和 MySQL Workbench 6.2.5。
谢谢!
【问题讨论】: