Reputation: 57
I write this SQL :
INSERT INTO registered (`idc`, `idp`, `date`)
SELECT 'idc'
FROM course,registered
INNER JOIN course c ON c.idc=registered.idc
WHERE course.title='aaa',
(SELECT `idp` FROM participant,registered
INNER JOIN participant ON participant.idp=registered.idp WHERE
participant.username='mmm')
I get this error:
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' (SELECT
idp
FROM participant,registered INNER JOIN participant ON pa' at line 4
Upvotes: 0
Views: 1728
Reputation: 57
course idc int(11)PRI auto_increment title varchar(200) UNI details text participant idp int(11)PRI auto_increment firstname varchar(50) lastname varchar(50) username varchar(100)UNI registered idc int(11) unsigned PRI idp int(11) unsigned PRI date date
Upvotes: 1
Reputation: 10807
Your insert sentence expects 3 values: (
idc,
idp,
date)
but your select sentence only supply one: SELECT 'idc'
You should redefine your query as:
INSERT INTO registered (`idc`, `idp`, `date`)
SELECT course.idc, participant.idp, <HERE A DATE>
FROM registered
INNER JOIN course ON course.idc = registered.idc
INNER JOIN participant ON participant.idp = registered.idp
WHERE
course.title = 'aaa'
and participant.username = 'mmm';
But your INSERT sentence expects a date field as a 3rd field, you must supply it.
Upvotes: 0
Reputation: 1
You may want to try something like this where you set a parent SELECT with the two other SELECT statements after it...
INSERT INTO registered (idc, idp, date)
SELECT
(SELECT 'idc' FROM course, registered INNER JOIN course c ON c.idc=registered.idc WHERE course.title='aaa'),
(SELECT idp FROM participant,registered INNER JOIN participant ON participant.idp=registered.idp WHERE participant.username='mmm');
Also, you'll likely need to set "date" as well. If it's set automatically based on the definition for that column, you can leave it out:
INSERT INTO registered (idc, idp)...
Upvotes: 0