Подзапрос вернул более 1 значения, синтаксическая ошибка
Я создаю свое первое левое соединение и у меня возникают синтаксические ошибки. Я был вверх и вниз по этому списку, и я не могу понять, в чем проблема. Вот настройки
У меня три стола Mass_List
, Parent
а также Parent_Place
, Все они имеют одинаковый идентификатор, но мне нужно получить Date_Close
от Mass_List
и ID
а также Username
от Parent
, убедившись, что пользователь является платным участником, что известно по столбцу MBSHIP
в Parent_Place
,
Я делаю запросы отдельно, и они работают, но когда я делаю запросы вместе, это говорит мне, что мой синтаксис правильный, но дает мне следующую ошибку
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
Я искал в Интернете, но ничего похожего на мой случай. Есть идеи, что не так с моим синтаксисом? Вот запрос
SELECT P.USERNAME, M.DATE_CLOSE, P.ID
FROM MASS_LIST M, PARENT P
WHERE P.ID =
(SELECT M.ID
FROM MASS_LIST M
INNER JOIN PARENT_PLACE PP ON PP.ID = M.ID
WHERE PP.CLASS_USR = 'PAID'
AND M.DATE_CLOSE > getdate()
AND PP.MBSHIP > 0)
AND M.DATE_CLOSE > GETDATE() ORDER BY M.DATE_CLOSE;
1 ответ
Я не уверен, зачем вам сначала нужен подвыбор... Просто объедините все 3 таблицы вместе... Хотя я нахожу странным, что столбец "ID" в каждой таблице объединяет их. Похоже, что вы пытаетесь соединиться на PK каждой таблицы, что не является способом, которым они должны объединяться, если каждая таблица действительно не является отношением 1-1 с другой... тогда я бы сказал, интересный дизайн таблицы.
SELECT ML.Date_Close, P.ID, P.UserName
FROM mass_List ML
INNER JOIN PARENT P
on ML.ID = P.ID
INNER JOIN PARENT_PLACE PP
on P.ID = PP.ID
WHERE PP.MBSHIP > 0
and PP.Class_user = 'PAID'
and M.Date_Close > getDate()
order by m.date_Close