Pokaż wyniki od 1 do 2 z 2
  1. #1
    Obserwator
    Dołączył
    January 08
    Postów
    1
    Siła Reputacji
    0


    Twoja ocena: Yes No

    SQL SELECT i GRUP BY

    Witam czy ktoś pomoże mi zrozumieć dlaczego w poniższym przykładzie jest błąd
    wiem że musi być taka sama liczba atrybutów w SELECT co w GRUP BY ale COUNT nie jest chyba atrybutem:
    Wypełnij tabelę „PracLiczNieruch”, wykorzystując ta-bele Personel i Nieruchomosc.
    PracLiczNieruch (id_prac, imie, nazwisko, licz_nieruchomosci)

    INSERT INTO PracLiczNieruch

    (SELECT p.id_prac, imie, nazwisko COUNT(*)

    FROM Personel AS p Nieruchomosc AS n

    WHERE p.id_prac= n.id_prac

    GROUP BY p.id_prac, imie, nazwisko)

    UNION

    (SELECT p.id_prac, imie, nazwisko, 0

    FROM Personel

    WHERE p.id_prac NOT IN

    (SELECT DISTINCT p.id_prac

    FROM Nieruchomosc));

    Acha i jeszcze jedno i co ta funkcja COUNT(*) zrobi zliczy wszystkie wiersze??
    Z góry dzięki za odpowiedź!!

  2. #2
    Obserwator
    Dołączył
    April 07
    Postów
    336
    Siła Reputacji
    0


    Twoja ocena: Yes No

    1. Jeżeli budujesz zapytanie z podzapytaniami i coś nie działa, to spróbuj rozebrać to na części: wykonaj każde z podzapytań osobno i sprawdź, które konkretnie nie działa.
    2. To nie musi tak być, że atrybuty występujące po GROUP BY muszą być też po SELECT. Po GROUP BY podajesz po jakich polach chcesz grupować rekordy, natomiast po SELECT podajesz, co chcesz wyświetlić. Przy czym wyświetlić możesz tylko pola (wszystkie lub wybrane), po których grupujesz i wynik funkcji agregujących (sum, count, min, max, ...).
      Tak więc jeśli po SELECT podajesz jakieś pole, to musi się ono znaleźć też po GROUP BY, ale w drugą stronę - niekoniecznie.
    3. Count(*) to jedna z funkcji agregujących, która zwraca liczbę rekordów w grupie. Można też próbować użyć Count(nazwa_pola) - w zależności od implementacji (bazy danych, na jakiej to chcesz użyć) - dostaniesz to samo co po Count(*) lub tylko liczbę rekordów, gdzie dane pole nie jest puste (Null) lub może jeszcze coś innego.
    4. Tak na oko, to brakuje Ci dwóch przecinków:
      Kod:
      SELECT p.id_prac, imie, nazwisko, COUNT(*)
      FROM Personel AS p, Nieruchomosc AS n
      ...

Informacje o temacie

Users Browsing this Thread

Aktualnie 1 użytkownik(ów) przegląda ten temat. (0 zarejestrowany(ch) oraz 1 gości)

Zakładki

Zakładki

Uprawnienia

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  

Jak czytać DI?

Powered by  
ATMAN EcoSerwer