Подзапрос вернул более 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
Другие вопросы по тегам