Negacja INNER JOIN?

0

Witam.
Mam pewien temat który nie wiem za bardzo jak ugryźć, tak kombinuję, może Wy coś podpowiecie. A mianowicie tworzę sobie w bazie tabelę która jest zlepkiem dwóch innych tabel. Wykonuję INNER JOIN-a po numerze_ident. W obu tabelach które join-uje ten numer jest unikalny. I ok, tabelę utworzyłem, wszystko super. Ale mam kilka numerów identyfikacyjnych w tabeli pierwszej które nie występują w tabeli drugiej więc siłą rzeczy w tabeli wynikowej zostaną one pominięte. I teraz co chcę zrobić. Dodałem sobie do zapytania tworzącego mi tabelę wynikową dodatkową kolumnę gdzie wrzucam flagę 'true' i 'false'. I w te wiersze które pomyślnie mi połączył czyli numer ident występował i w jednej i drugiej tabeli wrzucam na końcu flagę 'true'. Następnie chcę wykonać update na tej tabeli wynikowej który zaktualizuje mi ją o te wiersze gdzie ten numer ident występował wyłącznie w pierwszej tabeli a w drugiej nie i na końcu wstawi mi flagę 'false'. Jak myślicie, czy to co opisałem jest wykonalne w jakiś nie skomplikowany sposób?

0

Mógłbyś pokazać te tabele? Nie bardzo rozumiem, co próbujesz zrobić, ale brzmi podejrzanie.

0

Ale po co? o_O Czemu nie zrobisz zwykłego outer joina z warunkiem na nulla w joinowanej kolumnie po drugiej stronie? o_O
Tzn ja wiem czemu. Bo nie doczytałeś w kursie SQLa że inner join to nie jest jedyne możliwe złączenie...

0

A czy używając outer joina mogę te nullowe elementy wstawić na końcu? Bo o to mi chodzi. Żeby te elementy które nie występują w drugiej tabeli dodały się do tabeli wynikowej ale na jej końcu. A jak się domyślam outer join leci po kolei wierszami i na tej pozycji na której znajdzie tego nulla tam go wstawi.

Dlatego właśnie myślałem o drugim zapytaniu który mi zrobi selecta tylko z tych których nie można połączyć a następnie wykonam update na tej tabeli wynikowej i po sprawie. Tylko właśnie nie wiem jak wyselectować te których nie można złączyć bo ten numer ident występuje w jednej tabeli ale nie ma go w drugiej.

0

Co rozumiesz przez wstawianie "na końcu"? Gdzie jest koniec tabeli? :)

1

Tożto ci właśnie napisałem jak takie złączenie wykonać o_O Czytasz ty ze zrozumieniem?

select cośtam from t1 left outer join t2 on t1.id = t2.id where t2.id is null

Ale to jest bez sensu i brzydkie. Zrób zwykłego outer joina a potem posortuj po tej nullowej kolumnie na przykład, skoro chcesz wymusić kolejność. Ale nie do końca rozumiem po co...

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