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

Jak wyświetlić imię danego pracownika??

0 głosów
141 wizyt
pytanie zadane 11 czerwca 2017 w SQL, bazy danych przez glocek2121 Nowicjusz (160 p.)

Witam chce wyświetlić imie i nazwisko pracowników i ilość wykonanych przez niego transakcji.

Próbowałem to zrobić i narazie mam takie co :

select p.ID_PRACOWNIKA,count(t.ID_PRACOWNIKA) 
from  TRANSAKCJA t
inner JOIN PRACOWNIK p on t.ID_PRACOWNIKA =p.ID_PRACOWNIKA GROUP by p.ID_PRACOWNIKA;


Wsyztsko jest ok ale gdy próbuje dopisać p.imie to  wywala ze nie jest to wyrażenie GROUP BY

2 odpowiedzi

0 głosów
odpowiedź 12 czerwca 2017 przez seba Dyskutant (8,920 p.)
Dodaj do selecta imie
0 głosów
odpowiedź 12 czerwca 2017 przez Tomek Sochacki Ekspert (228,960 p.)

Spróbuj jak kolega wcześniej napisał, dodać imię do select.

Ja mam natomiast parę wskazówek użytkowych:

  1. proponuję kwerendy zapisywać wielkimi literami, czyli nie select tylko SELECT, nie jest to żaden wymóg ale ogólnie przyjęta zasada ułatwiająca później analizę zapytań - w tej chwili masz bardzo proste i krótkie zapytanie ale jeśli kiedyś będziesz pisał bardziej rozbudowanego selecta to konwencje mają znaczenie.
  2. uważałbym z nadawaniem aliasów w ten sposób jak Ty to robisz. Osobiście preferuję jawny zapis "FROM transakcja AS t" co również ułatwia późniejszą analizę zapytania.
  3. i na koniec mała uwaga do INNER JOIN... jest to tzw. iloczyn kartezjański, czyli zabójcza broń jeśli masz tabelę z wieloma rekordami. Ale zanim zaczniesz to zmieniać, to pod pojęciem "wieloma" mam na myśli ponad 10 tys. rekordów. Jest to bowiem porównanie każdy do każdego więc ilość pracy rośnie bardzo szybko wraz z kolejnymi rekordami. Sam oceń ile masz rekordów w tej chwili, i ile możesz mieć w przyszłości. Czasami pewnym rozwiązaniem problemu jest użycie LEFT lub RIGHT JOIN ale to już zależy od specyfiki danego zapytania i też nie jest antidotum na wszystko.
  4. podobnie jak pkt. 1 i 2 funkcje bazodanowe również polecam pisać z wielkich liter, czyli COUNT(), MAX(), NOW(), DATE_ADD() itp. takie same konwencje stosuje się np. podczas tworzenia procedur składowanych czi triggerów.
  5. z kolei nazwy tabel i pól zalecam pisać małymi literami. masz wtedy jednoznaczne rozróżnienie co jest kwerendą/funkcją, a co tabelą/polem.
  6. przy tego typu operacjach na łączonych tabelach polecam poomyśleć nad odpowiednimi indeksami i ewentualnie foreign key dla zabezpieczenia niektórych operacji - nie wiem czy to masz, więc to tylko taka luźna uwaga.

Jeśli rozwiązanie z dodaniem imienia do select nie ruszy to proponuję, abyś wrzucił również strukturę tabelek co znacznie ułatwi analizę zapytania.

Podobne pytania

0 głosów
3 odpowiedzi 747 wizyt
0 głosów
0 odpowiedzi 201 wizyt
pytanie zadane 6 lipca 2016 w PHP przez GaCeL Dyskutant (7,510 p.)
0 głosów
1 odpowiedź 452 wizyt
pytanie zadane 20 października 2016 w SQL, bazy danych przez Bartess Gaduła (3,600 p.)

88,720 zapytań

137,332 odpowiedzi

306,819 komentarzy

58,907 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...