Powiazanie danych w tabelach film-aktor

Powiazanie danych w tabelach film-aktor
M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

hej przepraszam mam problem z zapytaniem , czy moglibyscie mi ewentualnie z tym jakos pomoc
otóż:
napisz skrypt ktory wyswietli glownego aktora i rezysera dla kazdego filmu w bazie danych
tabele jak mysle beda dwie w tym momencie potrzebne bedzie to tabela movie i people, wygladaja one tak:
tabela movie

Kopiuj
 
movie_id
movie_name
movie_type
movie_year
movie_actor
movie_director

tabela people

Kopiuj
 
people_id
people_fullname
people_isactor
people_isdirector

tabela movie z przykladowymi danymi
1 brucewszechomogacy 5 2003 1 2

tabela people z przykladowymi danymi
1 jim carrey 1 0
za szybka pomoc bede wdzieczny

massther
  • Rejestracja: dni
  • Ostatnio: dni
0

Znaczy za gotowca do szkoły?
Wystarczy że złączysz tabelę filmów i ludzi za pomocą inner join. Żeby dostać aktora po movie_actor, a reżysera po movie_director.
Jeśli jedno zapytanie ma zwrócić i aktora i reżysera to masz kilka sposobów:

  1. jedno zapytanie o aktora i union all z zapytaniem o reżysera
  2. movie dwa razy join z people (raz po movie_actor, drugi po movie_director) + odpowiednie sortowanie (żeby np. zawsze aktor był pierwszy)
  3. jedno złączenie z warunkiem or, po aktorze lub po reżyserze + odpowiednie sortowanie (żeby np. zawsze aktor był pierwszy)
MA
  • Rejestracja: dni
  • Ostatnio: dni
0

Jak napisał massther, z tym że: idealnie byłoby przechowywać powiązania film-aktor w osobnej tabeli, w relacji jeden od wielu. Tak, tak wiem - chodzi o głównego aktora tylko, więc to tylko tak 'pro forma'.

M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

zrobilem na razie tylko z actorem nie wiem jak z dyrektorem

Kopiuj
select movie_name , people_fullname from movie inner join people on movie_actor=people_id order by 1;

czy po warunku dac 'and' ?

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
1
  1. Tu nie masz warunku, tylko łączenie tabel.
  2. Nie możesz dać AND, bo wtedy szukałbyś filmu, który ma takie samo id dla aktora i dyrektora. Czyli raczej nic byś nie znalazł... albo jakieś bzdury. Zapytanie powinno wyglądać tak:
Kopiuj
SELECT f.movie_name tytul, a.people_fullname aktor, d.people_fullname FROM movie f inner join people a ON f.movie_actor=a.people_id  JOIN people d ON d.people_id=f.movie_director ORDER BY 1
  1. Aliasuj. Jeśli tego nie będziesz robił, to nie będziesz mógł dwa razy dołączyć tej samej tabeli.
M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

ok dziekuje , bardzo za pomoc :) pozdrawiam :)

M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

bez drugiego inner nie poszlo tak wyglada kod ktory mnie zadzialal

Kopiuj
 SELECT f.movie_name tytul, a.people_fullname aktor, d.people_fullname FROM movie f INNER JOIN people a ON f.movie_actor=a.people_id  inner JOIN people d ON d.people_id=f.movie_director ORDER BY 1 

jeszcze raz dziekuje

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.