|
|
|
Как реализовать CASE при JOIN?
|
|||
|---|---|---|---|
|
#18+
Мда... бувают в жизни огорчения. При выполнении кода типа SELECT SUM(C.X) FROM A INNER JOIN B ON A.ID=B.ID INNER JOIN C ON B.ID=C.ID AND B.ID1=C.ID1 В последней строке мне необходимо менять параметры присоединения по типу INNER JOIN C ON (CASE WHEN B.ID2=1 THEN B.ID=C.ID AND B.ID1=C.ID1 ELSE B.ID=C.ID AND C.ID1=B.ID2 END) При попытке создать подобное SQL ругается, что ничего не понимает... Я тоже ничего не понимаю... Например, как это условие можно реализовать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2001, 14:39 |
|
||
|
Как реализовать CASE при JOIN?
|
|||
|---|---|---|---|
|
#18+
INNER JOIN C ON ( CASE WHEN B.ID2=1 THEN B.ID=C.ID AND B.ID1=C.ID1 ELSE B.ID=C.ID AND C.ID1=B.ID2 END) ( B.ID2 = 1 and B.ID=C.ID AND B.ID1=C.ID1) or ( B.ID2 != 1 and B.ID=C.ID AND C.ID1=B.ID2 ) Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2001, 14:47 |
|
||
|
Как реализовать CASE при JOIN?
|
|||
|---|---|---|---|
|
#18+
А если так попробовать SELECT SUM(C.X) FROM A INNER JOIN B ON A.ID=B.ID INNER JOIN C ON B.ID=C.ID AND C.ID1 = CASE WHEN B.ID2=1 THEN B.ID1 ELSE B.ID2 END Во всяком случае у меня на SQL2000 это работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2001, 14:53 |
|
||
|
|

start [/forum/topic.php?fid=46&gotonew=1&tid=1826759]: |
0ms |
get settings: |
12ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
109ms |
get topic data: |
12ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 470ms |

| 0 / 0 |
