2013-07-30 8 views
0

Я пытаюсь получить данные из базы данных, как это, но у меня есть эта ошибка, как я могу исправить?# 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 
+0

На ваш взгляд, когда вы выбираете несколько столбцов в подзапросе, как должен выглядеть результат? –

ответ

0

Ваш подзапрос:

(SELECT user.name, user.surname 
FROM users user 
WHERE profile_id = comments.profile_id) as name_comment 

имеет 2 поля вместо одного

Вы можете:

  1. Используйте 2 отчетливый подзапрос, чтобы получить user.name и user.surname;

  2. объединить две данные, чтобы у вас было одно поле вывода;

  3. Почему вы используете подзапрос, когда вы присоединились к вашей таблице пользователей в основном запросе (с тем же условием)

0

попробовать это

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 
1

Просто JOIN к таблице пользователей дважды

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 
Смежные вопросы