Как поместить оператор IF в запрос MySQL - PullRequest
3 голосов
/ 19 февраля 2009

У меня есть запрос, который просто выбирает из 3 таблиц.

  1. выберите из таблицы комментариев все комментарии к статье

  2. выберите из таблицы UserID, чтобы найти, какой это тип пользователя

  3. Если пользователь относится к одному типу, выполнить поиск по одной таблице ... В противном случае выполнить поиск по другой таблице для получения окончательной информации.

Как бы я поступил об этом? Я немного новичок в MySQL, поэтому я очень ценю ваше терпение!

PS - дайте мне знать, если это не ясно ...

Спасибо!

Ответы [ 2 ]

2 голосов
/ 19 февраля 2009

ОК. Допустим, условие типа - Если пользователь типа «foo» ищет таблицу «foovalues», то еще ищет таблицу «finalvalues» .... Предполагая, что структуры таблицы следующие:

Комментарии CommentID Идентификатор пользователя ArticleID

Пользователи Идентификатор пользователя UserType

 Declare TestUserType varchar(3);

 select * from Comments where ArticleID = <inputid>; //Returns the comments 

 select TestUserType = UserType from Users where UserID = <inputuser>; //Returns the usertype for a user and assigns it to a variable

 if TestUserType = 'foo' 
   begin 
    select * from FooValues;
   end
 else
   begin 
    select * from FinalValues;
   end 

Отказ от ответственности: приведенный выше SQL должен работать в mySQL, но прошло некоторое время с тех пор, как я работал над этой БД, и у меня сейчас нет к ней доступа, поэтому в приведенном выше SQL могут возникать синтаксические ошибки.

Вы также можете поместить SQL в хранимый процесс - если вы делаете, что в mySQL есть что-то о разделителях, о которых вы, возможно, захотите узнать - я писал об этом в блоге здесь

1 голос
/ 19 февраля 2009

Я бы не стал помещать их все в один запрос. Код становится намного более читабельным, если вы разбиваете операцию на более мелкие шаги.

Если производительность не имеет значения, вы можете сначала получить тип пользователя, а затем выполнить другой запрос в зависимости от типа.

Для более правильного способа вы должны рассмотреть возможность использования хранимой процедуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...