jestem na etapie wykonywania projektu na studia. Mam taki problem:
Założenia:
Jest sobie tabelka główna powiedzmy KSIĄŻKI , z nią w realcji typu JEDEN do WIELU tabelaka z osobami (relacja AUTORZY) bo założenie jest, że jedna ksiązka ma jednego autora, jeden autor moze napisać wiele książek. Dalej jest relacja WIELE do WIELU z Recenzentami. Czyli wiele osób daje recenzje dla pojedynczej książki, jeden recenzent recenzuje wiele ksiązek.
Czyli mam KSIĄZKI, w niej atrybut tytuł oraz Id_osoby.
Relacja wiele-do-wielu jest realizowana pośrednio przez tabelkę RECENZENCI, czyli mam jeszcze tabelkę RECENZENCI, a w niej relację Id_Ksiązki, Id_osoby.
Ostatnia tabelka to OSOBY z polem Id_osoby oraz Nazwisko.
Do łatwego wyświetlenia za pomocą PHP chciałem skorzystać z perspektywy z INNER JOIN, ale po pierwsze: w perspektywnie nie można dwa razy się odnośić do tego samego pola bo on nie wie które łączyć.
CREATE VIEW Ksiazki_widok ( Id, Tytul, A_nazwisko, R_nazwisko ) AS SELECT KSIAZKI.Id_ksiazki , KSIAZKI.Tytul , Osoby.Nazwisko , Osoby.Nazwisko FROM KSIAZKI --autorzy jeden do wielu INNER JOIN Osoby ON KSIAZKI.Id_osoby = Osoby.Id_osoby --recenzenci wiele do wielu INNER JOIN Recenzenci ON KSIAZKI.Id_ksiazki = Recenzenci.Id_ksiazki INNER JOIN Osoby ON Osoby.Id_osoby= Recenzenci.Id_osoby
Wyskauje błąd - Osoby.Id_osoby już istnieją. A więc nie nakierowałem go, że ma podmienić tylko w pierwszym wpisie Osoby.Nazwisko, a w drugim wpisie skorzystać z drugiego złączenia INNER JOIN. Czy ktoś ma pomysł jak powinienem to zrealizować?
Drugie pytanie:
Jak w łatwy sposób zrobić wyświetlenie wyników perspektywy bez dublowania poszczególnych pól? Tzn jeżeli mamy wiele recenzentów, to po inner join powstanie taka tabela jak poniżej:
TYTUL: Podstawy myslenia AUTOR: Miki Loki RECENZENT: Jan Mana
TYTUL: Podstawy myslenia AUTOR: Miki Loki RECENZENT: Kijan Minit
TYTUL: Podstawy myslenia AUTOR: Miki Loki RECENZENT: Roger Buj
Ja bym wolał mieć taki wynik w perspektywie:
TYTUL: Podstawy myslenia AUTOR: Miki Loki RECENZENT: Jan Mana, Kijan Minit, Roger Buj
Da radę to jakoś uzyskać?