• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zapytanie Oracle SQL

Object Storage Arubacloud
0 głosów
334 wizyt
pytanie zadane 23 stycznia 2018 w SQL, bazy danych przez Lemon Nowicjusz (210 p.)
Cześć

Mam do napisania następujące zapytanie "Wyświetlić Imię, Nazwisko, Stanowisko pracowników, który obsługiwał klientów z miejscowości XXX". Problem polega na tym że nie wiem jak logicznie stworzyć to zapytanie. Układ tabelek jest następujący.

Adresy (
Id_adresu PRIMARY KEY,
Miasto,
Ulica,
Nr
);

Osoby (
Id_osoby PRIMARY KEY,
Imie,
Nazwisko,
Wiek,
Id_adresu FOREIGN KEY
);

Klienci (
Id_klienta PRIMARY KEY,
Id_osoby FOREIGN KEY,
Znizka
);

Pracownicy (
Id_pracownika PRIMARY KEY,
Id_osoby FOREIGN KEY,
Nazwa_stanowiska
);

Uslugi (
Id_uslugi PRIMARY KEY,
Opis,
Cena
);

Zlecenia (
Id_zlecenia PRIMARY KEY,
Id_uslugi FOREIGN KEY,
Id_klienta FOREIGN KEY,
Id_pracownika FOREIGN KEY
);

2 odpowiedzi

0 głosów
odpowiedź 23 stycznia 2018 przez Wiciorny Ekspert (269,590 p.)
jednym zapytaniem tego nie wyciągniesz.

Tzn możesz wywołać zapytanie w procedurze iterujac po pracownikach a wyciagajac klientów :)

Skoro masz Pracownika- to on ma Referencje do klienta którego obsługiwał, ( nawet prosciej, bo do osoby... nie pośredniczysz przez tabele klient nawet ), więc spokojnie mozesz się odwołać do Adresu z  Osoby

https://stackoverflow.com/questions/6587514/how-to-select-sql-results-based-on-multiple-tables
komentarz 24 stycznia 2018 przez Lemon Nowicjusz (210 p.)
Właśnie nie wiem jak stworzyć podzapytanie do tego. Referencja Pracownika z klientem jest przez tabelę Zlecenia a w Zleceniach mam tylko Id_klienta nie osoby więc raczej muszę przejść przez tabelę klient :/
0 głosów
odpowiedź 23 stycznia 2018 przez Paweł Antyporowicz Stary wyjadacz (11,470 p.)
Na pewno brakuje Ci klucza obcego Id_klienta w tabeli Adresy. Wtedy możesz trochę poczytać o funkcji JOIN w SQL.
komentarz 24 stycznia 2018 przez Lemon Nowicjusz (210 p.)
Tabelki są z góry narzucone i muszę pracować na podanych bez żadnych modyfikacji.
komentarz 24 stycznia 2018 przez Paweł Antyporowicz Stary wyjadacz (11,470 p.)
Musisz wyciągnąć to prosto z bazy. Czy w czymś programujesz?
komentarz 24 stycznia 2018 przez Paweł Antyporowicz Stary wyjadacz (11,470 p.)
edycja 24 stycznia 2018 przez Paweł Antyporowicz

Ja bym zrobił to tak.
Na początku bym poszukał w tabeli adresy wszystkie id które miejscowości Cię interesują.
Później bym JOIN-ował osoby i pracownicy i szukał po id znalezionych adresów.

SELECT osoby.imie, osoby.naziwsko, osoby.posada FROM osoby 
JOIN klienci ON klienci.id_klienta = osoby.id_osoby
JOIN zlecenia ON zlecenia.id_klienta = klienci.id_klienta
WHERE osoby.id_adresu = szukany adres;

Nie wiem czy to będzie dobrze 100% dobrze ale coś takiego byś musiał zrobić. Ale uważam, że jakbyś miał klucz obcy osoby w tabeli adresy to by załatwiło sprawę.

komentarz 24 stycznia 2018 przez Paweł Antyporowicz Stary wyjadacz (11,470 p.)

A jakbyś miał klucz obcy w tabeli adresy to tak by to wyglądało

SELECT osoby.imie, osoby.naziwsko, osoby.posada, adresy.miejscowosc FROM osoby 
JOIN klienci ON klienci.id_klienta = osoby.id_osoby
JOIN zlecenia ON zlecenia.id_klienta = klienci.id_klienta
JOIN adresy ON adresy.id_adresu = osoby.id_adresu
WHERE osoby.id_adresu = szukany adres;

 

Podobne pytania

0 głosów
2 odpowiedzi 1,116 wizyt
pytanie zadane 31 sierpnia 2017 w SQL, bazy danych przez `Krzychuu Stary wyjadacz (13,940 p.)
+1 głos
2 odpowiedzi 1,292 wizyt
pytanie zadane 18 maja 2017 w SQL, bazy danych przez Marcin_N_97 Stary wyjadacz (10,290 p.)
0 głosów
0 odpowiedzi 325 wizyt
pytanie zadane 3 października 2017 w SQL, bazy danych przez guardman Nowicjusz (120 p.)

92,543 zapytań

141,384 odpowiedzi

319,488 komentarzy

61,929 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...