Zadanie 10. Pokaż wszystkich pracowników, którzy pracują w dziale logistyki lub informatyki. W wyniku wyświetl tylko imię i nazwisko pracownika.

Czego się dowiesz czytając ten wpis:

  • poznasz predykat IN,
  • poznasz operator OR,
  • powtórzysz wiedzę nt. ALIASÓW i WHERE.

 

Zadanie 10.

Pokaż wszystkich pracowników, którzy pracują w dziale logistyki lub informatyki. W wyniku wyświetl tylko imię i nazwisko pracownika.

Rozwiązanie:

Ponieważ nie znamy jeszcze łączenia tabel będziemy musieli się posłużyć się identyfikatorami wydziałów logistyki i informatyki, które znajdziemy w tabeli „Działy”. Logistyka ma ID=60 a informatyka ma ID=70.

Zaczynamy oczywiście od klauzul SELECT i FROM. Źródłem danych będzie tabela „Pracownicy”, więc:

FROM
   Pracownicy AS P

Przypominam i zachęcam do stosowania aliasów tak jak powyżej, nadaliśmy alias P dla tabeli „Pracownicy”, którym za chwilę będziemy się posługiwać w klauzuli SELECT. A w klauzuli SELECT „wyświetlamy” imię i nazwisko (wykorzystując nadany alias), czyli:

SELECT
    P.imie
   ,P.nazwisko

Teraz musimy ograniczyć w wynik zapytania tylko do tych pracowników, którzy pracują w logistyce lub informatyce. Jak już wcześniej pisałem wykorzystamy do tego identyfikatory (ID) tych działów i tak kolejno logistyka ma ID=60 a informatyka ma ID=70.

Aby zawęzić wyniki zapytania tylko do tych rekordów, które spełniają nasze kryterium, w naszym przypadku pracownik musi pracować w logistyce lub informatyce, wykorzystamy znaną nam już klauzulę WHERE, po której definiujemy nasze kryterium. Wiemy, że identyfikator działu znajduje się w polu „ID_dzialu”. Spójrz na definicję poniżej.

WHERE
   P.ID_dzialu IN (60,70)

Skorzystaliśmy z operatora IN. Powyższy zapis znaczy tyle co, znajdź tylko te rekordy w których pole „ID_dzialu” przyjmuje wartości ze zbioru który zadeklarowaliśmy, czyli przyjmuje wartość 60 lub 70. Jeśli w tym polu jest wartość z naszego zbioru dany rekord będzie wyświetlony w wynikach zapytania.

Jest jeszcze inna metoda na osiągnięcie tego samego efektu. Wykorzystamy do tego operator OR, który oznacza LUB. Patrz kod poniżej.

WHERE
   P.ID_dzialu = 60
   OR P.ID_dzialu = 70

Powyższy kod spowoduje wyświetlenia rekordów gdzie w polu „ID_dzialu” znajduje się wartość 60 LUB (OR) znajduje się wartość 70.

Efekt uruchomienia zapytania z IN lub z OR będzie identyczny to Wam pozostawiam osąd, która metoda jest lepsza. Wydaje mi się jednak, że zapis z IN jest czytelniejszy i łatwiejszy w definicji. Kompletne zapytania z IN i OR poniżej.

wariant z IN wariant z OR
SELECT
    P.imie
   ,P.nazwisko
FROM
    Pracownicy AS P
WHERE
    P.ID_dzialu IN (60,70)
SELECT
    P.imie
   ,P.nazwisko
FROM
   Pracownicy AS P
WHERE
   P.ID_dzialu = 60
   OR P.ID_dzialu = 70

 

Efekt uruchomienia zapytania poniżej.

kurs sql sql course where in or

 

poprzedni | następny