|
Join по нескольким полям с null
|
|||
---|---|---|---|
#18+
Добрый день! Подскажите, как оптимальнее написать запрос. Есть таблица фактов, которая соединяется с таблицами справочниками по нескольким полям. При этом в таблице-фактов эти поля не всегда имеют конкретное значение, бывает, что там проставлен null. Пример : Таблица фактов(F): Поле1 Поле2 поле3 поле4 Дата Значениеааа ввв ыыы ффф 01.01.2020 10ааа ппп ыыы ффф 01.01.2020 12ааа ввв ыыы ффф 02.01.2020 21ааа ввв null null 02.01.2020 2 Таблица справочник(S): ID Поле1 Поле2 поле3 поле40 null null null null1 ааа ввв ыыы ффф2 ааа ппп ыыы ффф3 ааа ввв null null Если запрос будет написан так: Код: sql 1. 2.
, то 4 строка привяжется к Id=0, а не 3 Любое из полей может принять значение null. Делала такую связку Код: sql 1.
При большом количестве связок запрос работает намного медленнее. Возможно есть более производительный способ? P.S. я знаю, что это ужасный способ связи таблиц, но по-другому никак. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 17:46 |
|
Join по нескольким полям с null
|
|||
---|---|---|---|
#18+
Lania, так не бывает, таблицы связываются по ключам, а ключ не может быть null значением или иметь в составе null атрибуты. Вы своим запросом получаете что-то среднепотолочное. Скорее всего из-за того, что справочники сведены в денормализованную таблицу. То, что вы называете "справочником" необходимо подвергнуть нормализации, разложить по таблицам, или обращаться к исходным таблицам этой "простыни", если такие есть. В этом случае запрос будет выглядеть и работать весьма прозрачно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:32 |
|
Join по нескольким полям с null
|
|||
---|---|---|---|
#18+
Lania, я бы не стеснялся написать простыню Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:37 |
|
Join по нескольким полям с null
|
|||
---|---|---|---|
#18+
Владислав Колосов Lania, так не бывает, таблицы связываются по ключам, а ключ не может быть null значением или иметь в составе null атрибуты. Гавноданные в наше время явление распространенное и работать с ними надо тоже уметь .... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:38 |
|
Join по нескольким полям с null
|
|||
---|---|---|---|
#18+
a_voronin, спасибо. Проверю насколько быстро будет работать такая конструкция. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:42 |
|
Join по нескольким полям с null
|
|||
---|---|---|---|
#18+
a_voronin, Я за нормализацию :) Типовая ETL, в общем-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:49 |
|
Join по нескольким полям с null
|
|||
---|---|---|---|
#18+
Владислав Колосов, Вы не представляете как я "ЗА"!=)) Но работаем с тем, что есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:53 |
|
Join по нескольким полям с null
|
|||
---|---|---|---|
#18+
Владислав Колосов так не бывает, таблицы связываются по ключам, а ключ не может быть null значением или иметь в составе null атрибуты. Например, это может быть UNIQUE CONSTRAINT, как известно, допускающий UNIQUE в полях ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 19:56 |
|
|
start [/forum/topic.php?fid=46&fpage=61&tid=1686157]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 148ms |
0 / 0 |