ошибка при использовании подзапроса - PullRequest
1 голос
/ 01 марта 2012

Этот запрос не работает:

SELECT
  user.user_id, 
  user.lastname,
  (SELECT
    reg_fee 
   FROM event 
   where event_name = (SELECT event_joined from user)
FROM user WHERE user.registration_type=1 AND user.payment_status=1

В чем проблема?

Ответы [ 2 ]

2 голосов
/ 01 марта 2012

Вам не хватает закрывающей скобки на первом внутреннем SELECT, но я не уверен, что это все равно получит то, что вы хотите.

SELECT
  user.user_id, 
  user.lastname,
  (SELECT
    reg_fee 
   FROM event 
   where event_name = (SELECT event_joined from user)
  /* Close the parens and add an alias */
  ) AS reg_fee
FROM user 
WHERE user.registration_type=1 AND user.payment_status=1

Это можно сделать немного более аккуратно (и, возможно, намного быстрее) с помощью JOIN, при условии, что я правильно вычистил структуру таблицы, и user.event_joined = event.event_name

SELECT
  user.user_id,
  user.lastname,
  SUM(reg_fee)
FROM user JOIN event ON event.event_name = user.event_joined
WHERE user.registration_type = 1 AND user.payment_status = 1
GROUP BY user.user_id, user.lastname
0 голосов
/ 01 марта 2012

Я полагаю, вы используете этот способ, который на мой взгляд более читабелен:

select user.user_id, user.lastname,event.req_fee
join event on (event.event_name = user.event_joined)
from user
where user.registration_type=1 AND user.payment_status=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...