Proste zapytanie z group by

0

Chciałam pogrupować po nazwie, napisałam tak:

SELECT imię,nazwisko,nazwa from BOHATEROWIE, Wioska WHERE Wioska=id_w group by nazwa

Otrzymałam to:

Kakashi Hatake konoha
Gaara NULL sunagakure

Czyli tylko pierwsze imiona i nazwiska spełniające zapytanie, jak sprawić aby tych nazwisk, imion było więcej? A by grupowało mi po nazwie i wypisywało wszystkich mieszkańców danej wioski?

Przykładowo:

Kakashi Hatake konoha
Minato Namikaze
Kushina Uzumaki
Naruto Uzumaki
Gaara NULL sunagakure
1

Chyba nie rozumiesz do czego służy grupowanie skoro chcesz wypisać wszystkich mieszkańców wioski - może chodzi ci o sortowanie?

0

Pamiętam, że w MS SQL po zastosowaniu tego raz wynik tak wyglądał.

Z tego co widzę group by, stosuję się tylko przy funkcjach agregujących.

Przykładowo,gdybyśmy chcieli uzyskać ile mieszkańców ma poszczególna wioska:

SELECT nazwa, COUNT(*) AS 'Liczba mieszkańców' from BOHATEROWIE, Wioska WHERE Wioska=id_w group by nazwa
0

Ciężko się tutaj domyśleć struktury bazy, ale myślę że chcesz użyć JOIN:

SELECT imię,nazwisko,nazwa FROM BOHATEROWIE
JOIN Wioska ON wioska = id_w -- rozumiem że tutaj 'wioska' to jest id wioski z BOHATEROWIE a 'id_w' to id z 'Wioska'
WHERE id_w = [tu id wioski którą chcesz]

Otrzymasz bohaterów tylko z danej wioski.

Grupowanie po nazwie wioski nie ma tutaj sensu, bo bohaterowie mają różne imiona i ciężko byłoby zmieścić ich w jednej krotce :P

0

No nie, mnie chodziło o coś innego.
Aby wypisać imiona, nazwiska osób które są w danej wiosce ale w postaci:

imie nazwisko wioska
imie nazwisko
imie nazwisko
imie nazwisko inna wioska
imie nazwisko
imie nazwisko

Struktura tabeli jest taka że w Bohaterowie mamy pole wioska które jest intem(i inne dane), w tabeli wioska mamy pola id_w które jest kluczem głównym i mamy nazwa które jest varcharem

0
SELECT imię,nazwisko,nazwa 
FROM BOHATEROWIE b
JOIN Wioska w ON w.id_w = b.wioska  
order by nazwa, imie, nazwisko
0

takie rzeczy to sobie załatw po stronie prezentacji danych a nie po stronie zapytania

0

A może autorce chodzi o użycie rollup?

0
Shalom napisał(a):

A może autorce chodzi o użycie rollup?

Autorka, sama nie wie o co jej chodzi. Wie tylko jaki by chciała efekt :)

Próbowałam rollup i to chyba nie jest rozwiązanie.

1

Takiego efektu osiągnąć sie nie da, przynajmniej nie standardowym SQLem. Pytanie brzmi po co tak kombinujesz? Przecież przerobienie wyników zwykłego zapytania z join do takiej formy, po stronie jęzka programowania, to jest może 5 linijek kodu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1