Wyświetl tytuły i rok produkcji filmów, w których zagrało dokładnie 2 aktorow. Muszę napisać kod.Moze ktos ms pomysł?
Jak powinno wyglądać zapytanie zwracające filmy z dwoma aktorami?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 1
0
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2206
3
Jakiś schemat bazy może. Czy mamy zgadywać z fusów?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Kraków
- Postów: 2026
3
Ok, potrzebujesz:
- zwrócić kolumny z interesującymi Cię informacjami (zgaduję, że dwie) - coś w stylu
SELECT <to co chcę> FROM <tam skąd chcę> ...., nie ma wielkiej filozofii - jeśli masz, a prawie na pewno masz, kilka tabel z różnymi informacjami o filmach, aktorach, rolach etc. to trzeba je jakoś złączyć ze sobą i zebrać do kupy - od tego masz
..... <jakaś tabela> JOIN <inna tabela> ..... Ponieważ "brak filmu" albo "brak aktora" średnio ma sens w tym kontekście, to pewnieINNER JOINbędzie najbardziej sensowny - nie potrzebujesz informacji o aktorach, a jedynie o tym ilu ich było, więc zapewne wystarczy złączyć np. filmy i role, z ról wyjąć klucze identyfikujące aktora i film i dopilnować, żeby nie było duplikatów (bo akurat jakiś aktor miał dwie role w jednym filmie niczym Cezary Żak w Ranczo) - pewnie gdzieś po drodze wskoczy
DISTINCT. Możliwe że pomocne będzie złączenie tabeli z filmami z jakimś podzapytaniem na rolach, a nie gołą tabelą - coś w stylu:.... INNER JOIN (SELECT DISTINCT ... FROM <tabela z rolami>) AS <jakaś tymczasowa nazwa> ... - takie bezwarunkowe złączenie
tak oskończy się tak, że dopasujesz każdy film z każdym aktorem, a to raczej nie ma sensu, potrzebny jest jakieś kryterium, a skoro mamy filmy i role to pewnie identyfikator filmu w obu tabelach powinien być taki sam:... ON <klucz z tabeli z filmami> = <klucz filmu z tabeli z rolami> ... - jak już masz potrzebne kolumny, wiesz który aktor grał w którym filmie, nie masz duplikatów i masz poprawne złączenie, trzeba jeszcze zliczyć wystąpienia aktorów dla każdego filmu. Najłatwiej będzie pogrupować wynik
JOINa po identyfikatorze filmu - od tego jest... GROUP BY <to po czym grupujesz> ... - chcesz też zliczyć aktorów dla każdego filmu - wynik masz już pogrupowany wg. filmów, więc "pod spodem" zagregowanych jest wiele rekordów dla danego filmu, odpowiadających poszczególnym aktorom. Wystarczy je zliczyć używając
COUNT(...) - masz zwrócić informacje o filmach z konkretną liczbą aktorów, więc potrzebny jest warunek. W przypadku grupowania możesz użyć
.... HAVING <warunek>. Warunkiem jest liczba aktorów równa 2, więc będzie to coś w stylu.... HAVING COUNT(...) = 2
No i z tych kawałków poskładasz już gotowe zapytanie :)
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6610
2
Аліса Єреемєєва napisał(a):
Muszę napisać kod.
Nie krępuj się, Albercik, pisz, pisz...
Moze ktos ms pomysł?
pewnie, że ktoś ma jakiś pomysł