|
Как создать условие для JOIN
|
|||
---|---|---|---|
#18+
Здравствуйте Подскажите, пожалуйста, как создать условие для JOIN таким образом, чтобы JOIN срабатывал только если ConfigID IS NOT NULL. Т.е. если ConfigID IS NULL - взять всех игроков из таблицы А, если ConfigID IS NOT NULL - только пересечения А и В. 1. SELECT А.Users FROM A INNER JOIN B ON (ConfigID IS NOT NULL and A.UserID=B.UserID) OR (ConfigID IS NULL) 2. SELECT А.Users LEFT JOIN B ON A.UserID=B.UserID WHERE (ConfigID IS NULL) OR (ConfigID IS NOT NULL AND B.UserID IS NOT NULL) Первый пример на больших данных вообще плохой вариант. Второй смущает тем, что LEFT JOIN с подзапросом, например, высчитает данные для юзеров, даже если они не имеют значения, а в идеале, чтобы JOIN "активировался" только при заполненном ConfigID. Можно ли это сделать без динамического SQL? Вообще это должна быть процедура с множеством конфигураций, чтобы запускать отчеты в цикле. И моя главная боль в том, как не считать лишнее, если конфигурация не установлена, оптимизейшн так сказать... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2021, 18:30 |
|
Как создать условие для JOIN
|
|||
---|---|---|---|
#18+
Luna17 Здравствуйте Подскажите, пожалуйста, как создать условие для JOIN таким образом, чтобы JOIN срабатывал только если ConfigID IS NOT NULL. я не профи, но сделал бы так заменил это Код: sql 1. 2. 3.
на Код: sql 1. 2. 3. 4. 5. 6. 7.
и, возможно, если позволяет версия, то использовать INTERSECT взамен INNER ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2021, 18:47 |
|
Как создать условие для JOIN
|
|||
---|---|---|---|
#18+
Учить надо... булеву алгебру. Код: sql 1. 2. 3.
Хоть короче будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2021, 19:40 |
|
Как создать условие для JOIN
|
|||
---|---|---|---|
#18+
Luna17, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2021, 20:38 |
|
Как создать условие для JOIN
|
|||
---|---|---|---|
#18+
invm, HandKot, Union не подходит, т.к. таких джойнов будет много ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2021, 12:18 |
|
Как создать условие для JOIN
|
|||
---|---|---|---|
#18+
Luna17 а в идеале, чтобы JOIN "активировался" только при заполненном ConfigID. Код: sql 1. 2. 3.
Только далеко не факт, что это будет оптимальной решение ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2021, 13:13 |
|
|
start [/forum/topic.php?fid=46&msg=40096108&tid=1684319]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
131ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 256ms |
total: | 478ms |
0 / 0 |