C# zapytanie join

Paweł Górski
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 4 lata
  • Postów:16
0

Witam,
używam C# oraz entity framework.
Mam dwie tabele (TABELA_A, TABELA_B) i proste zapytanie:

TABELA_A

ID NAZWA
1 N1
2 N2
3 N3
---------------- -------------------
TABELA_B
ID ID_TA STATUS NAZWA ID_PARENT
1 2 Stary N1 3
2 2 Stary N2 3
3 2 Nowy N2 null
4 2 Nowy N4 null
5 2 Nowy N5 null
---------------- ------------------- ------------------- ------------------- -------------------
Kopiuj
var innerJoin = from ta in dbContext.TABELA_A
                join tb in  dbContext.TABELA_B on ta.ID equals (decimal)tb.ID_TA
                where ta.NAZWA == "N1" && tb.STATUS == "Nowy"
                select new
                {
                    ID = tb.ID,
                    NAZWA_A = ta.NAZWA,
                    NAZWA_B = tb.NAZWA,
                    STATUS = tb.STATUS
                };

Aktualnie zaszła potrzeba tak zmodyfikować zapytanie ażeby wyeliminować wszyskie rekordy których ID jest równe któremukolwiek ID_PARENT (TABELA_B).
Czyli zapytanie nie powinno zwrócić rekordu o ID=3.
Jak można to zrealizować?

FA
  • Rejestracja:prawie 5 lat
  • Ostatnio:około 14 godzin
  • Postów:191
0
Kopiuj
Select...
from tabela_a ta
left join tabela_b tb on tb.id_parent=ta.id
where tb.id_parent is null

albo

Kopiuj
select...
from tabela_a ta
where ta.id not in (
 select id_parent from tabela_b
)

Chciałbym kiedyś wiedzieć tyle, by spełniać wymagania na moim obecnym stanowisku :)
edytowany 2x, ostatnio: Fac
Marcin.Miga
Nie, tylko nie NOT IN!
FA
Jest to rozwiązanie problemu. Że niezalecane, to inna sprawa. Ja w kodzie widzę to tak często, że z przyzwyczajenia podaje jako przykład. Zauważ jednak, że na drugim miejscu :)
Marcin.Miga
Głupoty gadasz. Podobnie zresztą jak głupoty zwraca NOT IN z Nullem w środku.
FA
Moja culpa, głupoty gadałem!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.