Aktywne Wpisy

kamil-tumuletz +107
„Polish jokes” to gotowy tytuł na dokument o tym, jak w Polsce przez trzy dekady wbijano ludziom do głowy, że trzeba się „cieszyć z roboty za grosze, bo inaczej gospodarka padnie”.
To jest groteskowy paradoks:
– państwo dogania Zachód wskaźnikami PKB,
– młodzi masowo emigrują, bo tutaj nie da się żyć za pensję,
– a w dyskusjach o podwyżce minimalnej wciąż dominuje retoryka januszexu: „jak podniesiecie, to ja zamknę firmę, bo się nie opłaca”.
To jest groteskowy paradoks:
– państwo dogania Zachód wskaźnikami PKB,
– młodzi masowo emigrują, bo tutaj nie da się żyć za pensję,
– a w dyskusjach o podwyżce minimalnej wciąż dominuje retoryka januszexu: „jak podniesiecie, to ja zamknę firmę, bo się nie opłaca”.
źródło: Zdjęcie z biblioteki
Pobierz
Idę na grzibki, nie znam się na tym to nigdy nie chodziłem, no za dzieciaka z wujkiem takim co się znal.
Moja mama wpoiła mi jakąś panikę przed grzybami, ona ma mykofobie jakas.
No i nie chodziłem bo się nie znam, ale znajomy sprzedał mi protip, jak nie znam jakiegoś grziba to sobie go wrzuce w chat GPT i on mie tego grziba zidentyfikuje i powie czy to borowik czy szatan jakiś.
Moja mama wpoiła mi jakąś panikę przed grzybami, ona ma mykofobie jakas.
No i nie chodziłem bo się nie znam, ale znajomy sprzedał mi protip, jak nie znam jakiegoś grziba to sobie go wrzuce w chat GPT i on mie tego grziba zidentyfikuje i powie czy to borowik czy szatan jakiś.





Mamy zapytanie w ANSI łączące trzy tabele. Daje ono 106 wierszy:
select first_name, last_name, department_name, job_titlefrom employees e
right join departments d on e.department_id = d.department_id
right join jobs j on e.job_id = j.job_id;
Ale jeżeli przekształcimy je na non-ANSI syntax, to robi się cross join tabeli departments z tabelą jobs, i wychodzi już 600 wierszy:
select first_name, last_name, department_name, e.department_id, d.department_id, j.job_title, e.job_id, j.job_idfrom employees e, departments d, jobs j
where e.department_id(+) = d.department_id
and e.job_id(+) = j.job_id;
Dlaczego tak się dzieje? Wiem jak to naprawić, ale może mi ktoś powiedzieć jaka logika za tym stoi? Bo normalnie najpierw łączą się tabele employees z departments, a dopiero później rezultat tego połączenia łączy się z jobs. Ale przy non-ANSI to nie działa.
Jest to domyślna HR schema od Oracle:
--------------- -------- ------------
Employees (107 rows):
EMPLOYEE_ID
FIRST_NAME
LAST_NAME
EMAIL
PHONE_NUMBER
HIRE_DATE
JOB_ID
SALARY
COMMISSION_PCT
MANAGER_ID
DEPARTMENT_ID
-------------- -------- ------------
Departments (27 rows):
DEPARTMENT_ID
DEPARTMENT_NAME
MANAGER_ID
LOCATION_ID
-------------- -------- ------------
Jobs (19 rows):
JOB_ID
JOB_TITLE
MIN_SALARY
MAX_SALARY
--------------- -------- ------------
#sql #oracle #programowanie
Rozumiem problem, z którym się borykasz. Wygląda na to, że doświadczasz problemu wynikającego z różnic w zachowaniu składni ANSI i non-ANSI podczas wykonywania wielokrotnych zewnętrznych łączeń (RIGHT JOINs).
Oto, co się dzieje w obu przypadkach:
łącząc przez joina a=b już robisz filtrację wyniku bo tylko pokaże Ci dane gdzie a=b
no ansi nie na logiki(tu przykład tej "logiki") wychodzi Ci za dużo pewnie niepotrzebnych danych które później w where musisz umiejętnie przefiltrować
są przypadki gdzie powinniśmy użyć cross joina, ale to nie jest ten przypadek