Join z pustymi polami ms access

0

Cześć,

mam takiego joina:

Screenshot_25.png

i dostaję:

titleScreenshot_26.png

czyli pole ID2 jest puste.
Jak mozna wskazać accessowi, że ma też łączyć po pustych polach?

table są identyczne tylko mamy nulle.

0

Sprawdź czy jest Null i jak tak zamień na coś np na pusty ciąg "". Zrób to po obu stronach (tj. w obu tabelach. I będzie OK.

Edit: dodatkowa podpowiedź - u żyj funkcji nz()

0

czesc!

Czy to jest dobre podejscie i czesto uzywane?

0

Hmm nie do końca rozumiem pytanie :| - IMHO nie ma innej metody jeśli chcesz osiągnąć to co chcesz ... czyli porównywać null'e w 2 tablicach.
Ale poczekaj, może ktoś mądrzejszy Tobie opowie dokładniej.

Edit: A czy to dobre podejście to ... moim zdaniem "NIE" - w sensie nie powinieneś łączyć 2 (czy więcej tabel) po kolumnach w których z obu stron może występować NULL. Z założenia 1 tablica powinna być nie jako kluczem i w tym raczej nie powinien występować NULL ... ale oczywiście są wyjątki.

0

Zapytanie powinno wyglądać tak:

SELECT Table1.Field1, Table1.Field2, Table2.ID2
FROM Table1 LEFT JOIN Table2 ON (nz(Table1.Field2) = nz(Table2.Field2)) AND (nz(Table1.Field1) = nz(Table2.Field1));

https://support.office.com/pl-pl/article/funkcja-nz-8ef85549-cc9c-438b-860a-7fd9f4c69b6c

Czy to jest dobre podejscie i czesto uzywane?

To jest jedyne podejście przy sprzężeniu tabel i wartościach null, ponieważ jeden null nie będzie nigdy równy drugiemu null (wg ANSI) (poczytaj o logice trójwartościowej w bazach danych), więc jeżeli chcesz łączyć się po kolumnach z null to musisz zamienić wartości null na cos co da się porównywać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1