#1241 - Операнд должен содержать 1 столбцов. MYSQL
Я пытаюсь получить данные из базы данных, но у меня есть эта ошибка, как я могу исправить?
SELECT post.text,users.name,users.surname,users.profile_id,post.post_id,comments.text as comment,
(SELECT user.name, user.surname FROM users user WHERE profile_id = comments.profile_id) as name_comment
FROM post
INNER JOIN users ON users.profile_id = post.profile_id
INNER JOIN comments ON comments.profile_post = post.post_id
3 ответа
Просто присоединитесь к таблице пользователей дважды
SELECT
post.text,
userpost.name,
userpost.surname,
userpost.profile_id,
post.post_id,
comments.text as comment,
usercomment.name, usercomment.surname -- this
FROM post
INNER JOIN users userpost ON userpost.profile_id = post.profile_id
INNER JOIN comments ON comments.profile_post = post.post_id
INNER JOIN users usercomment ON comments.profile_id = usercomment.profile_id
Ваш подзапрос:
(SELECT user.name, user.surname
FROM users user
WHERE profile_id = comments.profile_id) as name_comment
имеет 2 поля вместо одного
Вы можете:
Используйте 2 различных подзапроса, чтобы получить user.name и user.surname;
объединить две информации, чтобы у вас было одно поле вывода;
Почему вы используете подзапрос, когда вы присоединились к таблице пользователей в основном запросе (с тем же условием)
Попробуй это
SELECT post.text,users.name,users.surname,users.profile_id,post.post_id,comments.text as comment
FROM post
INNER JOIN users ON users.profile_id = post.profile_id
INNER JOIN comments ON comments.profile_post = post.post_id
WHERE profile_id = comments.profile_id