Złączenie tabel i wykluczeniem danych rekordów

0

Witam. Przyznam się że nie jestem mistrzem SQL-a ale próbowałem już wszystkich złączeń. Chodzi T1.Code będzie miało wartość z "F" to ma nie wyświetlać w zapytaniu żadnych wyników T0.Code w których raz wystąpiło T1.[Code] z wartością 'F%'.

Towar_nadrzednyT0.Code Towar_podrzednyT1.[Code]

111 44343

111 F3

111 4242

Czyli jak wystąpi takie F to select nie ma już wybrać żadnego Towaru nadrzędnego 111
Zrobiłem zapytanie ale on wyklucza tylko pozycje z F np

Moje zapytanie:

SELECT T0.[Code],T1.[Code], T1.[Quantity], T1.[Warehouse], T1.[IssueMthd] FROM OITT T0  LEFT OUTER JOIN ITT1 T1 ON T0.Code = T1.Father WHERE T1.[Code] NOT LIKE 'F%'
0

Ja bym zaczął od przeniesienia warunku do podzapytania:

SELECT t0.code, t1.quantity, t1.warehouse, t1.issuemthd from OITT t0
    LEFT JOIN (
        SELECT * from itt1  where code not like '%F%'
    ) t1 on t0.code = t1.tather

To już na dzień dobry ogranicza zbiór po którym następuje join do rekordów bez Fxxx.

0

Nie obraź się, ale z polskiego (gramatyki) to też chyba orłem nie jesteś :)

Spróbuj jeszcze raz po ludzku opisać ten problem to na pewno pomożemy :)

0
SELECT * FROM tabela WHERE Code NOT IN (SELECT Code FROM tabela WHERE innecode LIKE 'F%")
0

Buduje drzewo a warunek ma wywalić całą gałąź od elementu nadrzędnego w dół, zawierającego w podgałęzi w początku nazwycoś na F . Może teraz lepiej się wyraziłem? ;)

0

:) znacznie lepiej. Skorzystaj z rozwiązanie podanego przez @Marcina dwa posty wyżej. Szukasz elementów podrzędnych zaczynających się na F, zwracasz ich ID nadrzędne (w podzapytaniu) i tych gałęzi nie chcesz widzieć w wyniku.... dlatego odsiewasz je w warunku WHERE. Wszystko jest trudne zanim nie stanie się proste :)

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