Мне нужно иметь возможность добавлять строку «отзывы» в базу данных. Мне нужно работать с подзапросами. Мне нужно объединить «UserID» из таблицы «User» с «OutfitID» из столбца таблицы «Outfit». Таким образом, я могу сказать, какой отзыв принадлежит какому Пользователю и какой одежде.
Сначала я попробовал этот запрос:
SELECT Gebruiker.GebrID,Outfit.ID
FROM Gebruiker
INNER JOIN Outfit ON Outfit.GebrID = Gebruiker.GebrID
WHERE Gebruiker.Alias = 'john'
INSERT INTO Review(GebrID,OutfitID,StukTekst)
VALUES(Gebruiker.GebrID, Outfit.ID,'ziet er cool uit');
Теперь я хочу добавить данные в таблицу обзора, но получаю сообщение об ошибке:
@HoneyBadger, да, спасибо за напоминание. Я изменил его только на сервер sql.
@HoneyBadger, у вас есть идеи, как я могу решить эту проблему?
Насколько веселее был бы этот вопрос, если бы в вопросе было правильное описание базы данных, а не картинка ?. При использовании SSMS щелкните правой кнопкой мыши таблицу, «Создать таблицу как», «Создать в», «Новые окна редактора запросов» и скопировать/вставить оператор CREATE TABLE .....
было бы намного приятнее! ?
Если вам необходимо использовать подзапросы, возможно, также используйте их.
Вы хотите получить значения от пользователя John
, чтобы вставить их в Review
.
Вы можете сделать это:
INSERT INTO Review(GebrID, OutfitID, StukTekst)
VALUES ((SELECT GebrID FROM Gebruikers WHERE Gebruiker.Alias = 'john'),
(SELECT Outfit.ID FROM Outfit INNER JOIN Gebuikers ON Outfit.GebrID = Gebruikers.GebrID WHERE Gebruikers.Alias = 'john'),
'ziet er cool uit'
);
Теперь вы также используете подзапросы.
Более прямой способ сделать это — избежать предложения values
и повторяющихся скалярных подзапросов:
INSERT INTO Review (GebrID, OutfitID, StukTekst)
SELECT Gebruiker.GebrID, Outfit.ID, 'ziet er cool uit'
FROM Gebruiker INNER JOIN Outfit ON Outfit.GebrID = Gebruiker.GebrID
WHERE Gebruiker.Alias = 'john';
Что касается того, соответствует ли чье-то произвольное требование «подзапросов», неясно. Если этот запрос возвращает несколько строк, он вставит их все, если это не приведет к нарушению операции вставки.
«Я должен работать с подзапросами», где подзапросы?