Оператор SQL if - PullRequest
       6

Оператор SQL if

0 голосов
/ 18 января 2012

Как вы делаете, если заявления в SQL? я хочу сделать что-то вроде этого:

SELECT DISTINCT exchange.id userid, exchange.name username, exchange.lastactivity     lastactivity, exchange.id avatar, exchange.id link, cometchat_status.message, cometchat_status.status
FROM buddy
if( buddy.penpalA = 887){
      JOIN exchange ON buddy.penpalA = exchange.id
}ELSE{
      JOIN exchange ON buddy.penpalB = exchange.id
}
LEFT JOIN cometchat_status ON exchange.id = cometchat_status.userid
if( buddy.penpalA = 887){
      WHERE buddy.penpalB =887
}ELSE{
      WHERE buddy.penpalA =887
}    

ORDER BY username ASC 

Ответы [ 2 ]

2 голосов
/ 18 января 2012

Просто измените ваши WHERE с и ON с. Заметьте, что парантезы вокруг AND ed сравнений не нужны; Я сделал это только для того, чтобы уточнить, что происходит.

SELECT DISTINCT exchange.id userid, exchange.name username,
                exchange.lastactivity lastactivity, exchange.id avatar,
                exchange.id link, cometchat_status.message,
                cometchat_status.status
FROM buddy
JOIN exchange ON (buddy.penpalA = exchange.id AND buddy.penpalA = 887)
              OR (buddy.penpalB = exchange.id AND buddy.penpalA <> 887 AND buddy.penpalB = 887)
LEFT JOIN cometchat_status ON exchange.id = cometchat_status.userid
WHERE buddy.penpalA = 887 OR buddy.penpalB = 887
ORDER BY username ASC

UPDATE:

Я изменил код выше, чтобы присоединиться, когда penpalB равен 887, насколько я понимаю, ваш комментарий.

0 голосов
/ 18 января 2012

Итак, используя Transact-SQL, вы можете структурировать IF-ELSE следующим образом:

IF a > b
BEGIN
   // do something
END
ELSE
   // do something else
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...