myDBR を使用してデータベースのレポートを作成し、各イベントに複数のDesignTypesを持つ新しいイベントを追加できる 1 つのレポート用のフォームを持っています。
イベント( EventID, Event, URL )、DesignType ( DesignTypeID, DesignType )、およびDesignTypeXEvents ( DesignTypeXEventID, EventID, DesignTypeID ) の3 つのテーブルがあります。
私のフォームには DesignTypes のチェックボックスがあり、EventIDとDesignTypeIDをテーブルDesignTypeXEventsに挿入する必要があります。しかし、複数のデザイン タイプを選択すると、Subquery returns more than 1 rowというエラーが表示されます。複数のデザイン タイプを選択した場合、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が必要です。