подзапрос с внутренним объединением - PullRequest
0 голосов
/ 06 ноября 2018

Я застрял в проблеме подзапроса, пытаясь получить несколько столбцов при использовании объединения.

Я пытаюсь получить другие поля из других таблиц, основываясь на том, какое поле "тип" установлено для системы уведомлений, которая отслеживает различные разделы сайта.

Я надеялся, что смогу сделать что-то вроде этого:

SELECT
    n.`id`,
    n.`last_date`,
    IF(n.type = 'liked', (SELECT co.`article_id`, a.article_id FROM `articles_comments` co INNER JOIN `articles` a ON a.article_id = co.article_id WHERE co.`comment_id` = n.data_id), NULL),
    n.`comment_id`,
            n.`type`,
            n.`data_id`,
            FROM
                `user_notifications` n
            WHERE n.`owner_id` = 8505

Проблема в том, что phpmyadmin выдает ошибку «# 1241 - Операнд должен содержать 1 столбец (столбцы)»

Я немного сбит с толку, потому что, если я не включаю INNER JOIN и только беру "article_id", он работает нормально.

1 Ответ

0 голосов
/ 06 ноября 2018

Подзапрос должен возвращать только один столбец

вы можете увидеть эту ссылку

этот запрос

(SELECT  a.article_id 
FROM `article
s_comments` co 
INNER JOIN `articles` a 
ON a.article_id = co.article_id 
WHERE co.`comment_id` = n.data_id)

должно быть примерно так

(SELECT  a.article_id 
FROM `article
s_comments` co 
INNER JOIN `articles` a 
ON a.article_id = co.article_id 
WHERE co.`comment_id` = n.data_id)
UNION ALL
(SELECT co.`article_id`
FROM `article
s_comments` co 
INNER JOIN `articles` a 
ON a.article_id = co.article_id 
WHERE co.`comment_id` = n.data_id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...