Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在一个表中插入多行,其中column1的外键相同,column2的值不同_Mysql_Insert_Foreign Keys_Mydbr - Fatal编程技术网

Mysql 在一个表中插入多行,其中column1的外键相同,column2的值不同

Mysql 在一个表中插入多行,其中column1的外键相同,column2的值不同,mysql,insert,foreign-keys,mydbr,Mysql,Insert,Foreign Keys,Mydbr,我使用myDBR为我的数据库创建报告,我有一个用于一个报告的表单,可以在其中为每个事件添加一个具有多个设计类型的新事件 我有3个表:Events EventID、Event、URL、DesignType DesignTypeID、DesignType和DesignTypeXEvents DesignTypeXEventID、EventID、DesignTypeID “我的表单”中有DesignTypes复选框,这些复选框应将EventID和DesignTypeID插入表DesignTypeXEv

我使用myDBR为我的数据库创建报告,我有一个用于一个报告的表单,可以在其中为每个事件添加一个具有多个设计类型的新事件

我有3个表:Events EventID、Event、URL、DesignType DesignTypeID、DesignType和DesignTypeXEvents DesignTypeXEventID、EventID、DesignTypeID

“我的表单”中有DesignTypes复选框,这些复选框应将EventID和DesignTypeID插入表DesignTypeXEvents中。但如果我选择了多个设计类型,我会得到一个错误,即子查询返回多行。如果我选择了多个设计类型,是否有办法使EventID复制到其他行中

这是我的密码:

    CREATE PROCEDURE `sp_DBR_events_create`(
    inEvent varchar(70),
    inEventURL varchar(70),
    inDesignType text
    )
    BEGIN

    INSERT INTO Events (Event, URL)
    VALUES (inEvent, inURL);

    set @vSQL = concat('insert into DesignTypeXEvents (EventID, 
    DesignTypeID) values ((SELECT MAX(EventID) FROM Events),
    (select DesignTypeID from DesignTypes where DesignTypeID in
    (', inDesignType, ')))');
    prepare stmt from @vSQL;
    execute stmt;
    deallocate prepare stmt;
如果我没有包含EventID,这段代码非常有用&将正确的DesignTypeID插入多行,但我当然需要EventID。

使用INSERT-into。。。选择而不是插入到。。。价值观


非常感谢。我一直在想为什么它几个小时都不工作。我在代码末尾做了一些小改动,请在您的条目中进行编辑&我接受:交叉连接后,从DesignTypeID in',inDesignType',d'中的DesignTypeID中选择DesignTypeID;
set @vSQL = concat('
    INSERT INTO DesignTypeXEvents (EventID, DesignTypeID)
    SELECT MaxEvent, DesignTypeID
    FROM (SELECT MAX(EventID) MaxEvent FROM Events) m
    CROSS JOIN
    (SELECT DesignTypeID FROM DesignTypes WHERE DesignTypeID IN (', inDesignType, ')) d');