Как создать запрос для перечисления всех возможных комбинаций - PullRequest
1 голос
/ 13 февраля 2010

У меня есть таблица валют (Rec_ID, валюта), которая имеет отношение M-M к себе, в результате получается таблица CurrencyExchangeRate (Rec_ID, Currency_FK1 AS 'FROM', Currency_FK2 AS 'TO, Exchange_Rate)

Теперь мне нужен запрос, чтобы сделать все комбинации валюты rec_id (повтор не допускается), вместе с обменным курсом или ноль. если в валюте 3 записи, то в запросе должно быть 6 строк.

Спасибо

Ответы [ 2 ]

1 голос
/ 13 февраля 2010

Если вы хотите, чтобы все комбинации (, даже те, для которых не определен тариф ), то сначала присоединитесь к нему, а затем со ставками

SELECT 
  c1.currency AS [From], c2.currency AS [To] , cer.Exchange_Rate
FROM
  currency c1 JOIN currency c2 ON c1.rec_id <> c2.rec_id
  LEFT OUTER JOIN CurrencyExchangeRate cer ON c1.rec_id = cer.[from] 
         AND c2.rec_id = cer.[to]
0 голосов
/ 13 февраля 2010
SELECT
   CCY1, CCY2, CER.Exchange_Rate
FROM
    ( 
    SELECT
        c1.rec_id AS rec_id1, c1.currency AS CCY1,
        c2.rec_id AS rec_id2, c2.currency AS CCY2
    FROM
        currency c1
        CROSS JOIN --all combinations...
        currency c2
    WHERE
        c1.rec_id <> c2rec_id -- ...removes same pairs
    ) foo
    LEFT JOIN -- ...get matching FX pairs
    CurrencyExchangeRate CER ON foo.rec_id1 = cer.[from] AND foo.rec_id2 = cer.[to]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...