Функция внешнего соединения SQL - PullRequest
3 голосов
/ 16 марта 2009

Я уже писал эту функцию раньше, но не могу вспомнить ее, и она не попала в систему контроля версий. Теперь я больше не могу вспомнить, как его восстановить, чем что-либо еще.

Вот идея. У меня есть две таблицы, «regPrice» и «custPrice», с общим ключом «itemID». Они оба имеют столбец «цена», а custPrice также имеет другой ключевой «acct», так что если цена существует в custPrice, она должна возвращать эту. Если нет записи custPrice, она должна вернуть regPrice.

псевдокод:

if(select custPrice where acct = passedAcct and itemID = passedItemID) {
   return custPrice;
else 
   return regPrice;

Любая помощь будет оценена.

Ответы [ 3 ]

6 голосов
/ 16 марта 2009
SELECT COALESCE(c.price, r.price) AS price
FROM regPrice r LEFT OUTER JOIN custPrice c
 ON (r.itemID = c.itemID AND c.acct = ?)
WHERE r.itemID = ?;
2 голосов
/ 16 марта 2009
select r.itemID, r.Acct,
case when c.price is null then r.price else c.price end as price
from regPrice r
left outer join custPrice c
on r.itemID = c.itemID
and r.Acct = @passedAcct
where r.itemID = @passedItemID
1 голос
/ 16 марта 2009

Посмотрите на функцию COALESCE, если вы не используете NULL, в этом случае вы захотите использовать CASE.

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