yonami Napisano Sierpień 2, 2009 Zgłoś Share Napisano Sierpień 2, 2009 Witam Potrzebuję zrobić najmądrzej jak się da, relację między tabelami. Być może problem tylko ja widzę, gdyż jestem w zasadzie newbie jeżeli chodzi o MySQL. W każdym bądź razie, postaram się wyjaśnić na prostym przykładzie, gdzie ja dostrzegam problem. PRZYKŁADOWE TABELE KOD create table parents ( id int, firstname varchar(32), lastname varchar(32), age int(2) ); create table children ( id int, firstname varchar(32), lastname varchar(32), age int(2) ); Teraz potrzebna jest relacja między rodzicami a dziećmi. Załóżmy, że wyglądała by tak: KOD alter table children add ( pid int, foreign key pid references parents(id) ); Dlaczego widzę problem? Załóżmy, że chcę wyświetlić na stronię imiona dzieci i imię rodzica, w sytuacji gdy podany mam id rodzica (pseudokod): KOD x = select * from children where pid=0; y = select * from parents where id=0; print x['firstname'] + y['firstname']; Jak widać muszę przeszukiwać wielokrotnie bazę selectem. Chciałbym, mieć referencję od razu też do imiona rodzica: KOD alter table children add ( pfirstname varchar(32), foreign key pfirstname references parents(firstname) ); Wyjdzie mi: (pseudokod) KOD x = select * from children where pid=0; print = x['firstname'] + x['pfirstname']; Jednak wtedy problem ( ja przynajmniej go widzę ), jest w dodawaniu dzieci: KOD insert into children values ( 0, 'Jadzia', 'Nazwiskowa', 3, 'Nazwiskowy' ); Czy da się, zrobić relację, nie wymagającą podawania ciągów znaków, tak jak w tym przypadku "Nazwiskowy" przy nazwisku rodzica? Aby podając samo id rodzica, tworzona była przez mysql referencja do nazwiska? PS: Właśnie teraz, kiedy wysłałem posta, pomyslałem, że jest to relacja "jeden do wielu"... Obudziłem się co dopiero :-D Zerknę na neta, bo chyba te relacje trzeba dodawać grupami, bo inaczej przeciez będą się gryźć. Poza tym z nazwiska trzeba jakoś zrobić klucz i oba również jakoś połączyć w relacji :-) Mam nadzieję, że jasno wyjasniłem problem. Bardzo proszę o podpowiedź :-) yonami Link do komentarza Udostępnij na innych stronach More sharing options...
Blind Napisano Sierpień 2, 2009 Zgłoś Share Napisano Sierpień 2, 2009 Doczytalem do polowy, reszty raczej nie ma sensu, bo problem widze w tych dwoch identycznych tabelach, nie wygladaja mi na "madre". Stworz jedna tabele z ludzmi z i z dodatkowa kolumna ParentID. Dodawanie do tabeli czegos co jest wiadome, ze bedzie, tez nie jest zby madre(alter). www.blinder.pl - Blog Link do komentarza Udostępnij na innych stronach More sharing options...
yonami Napisano Sierpień 2, 2009 Autor Zgłoś Share Napisano Sierpień 2, 2009 Doczytalem do polowy, reszty raczej nie ma sensu, bo problem widze w tych dwoch identycznych tabelach, nie wygladaja mi na "madre". Stworz jedna tabele z ludzmi z i z dodatkowa kolumna ParentID. Dodawanie do tabeli czegos co jest wiadome, ze bedzie, tez nie jest zby madre(alter). Nie, nie. Te tabele są tylko przykładem. W rzeczywistości wszystkie tabale są całkowicie odmienne. Po prostu potrzebuje mieć referencje do id i nazwy z innej tabeli, aby nie wykonywac zbyt wielu selectów. Bo te dane są po prostu mi od kopa potrzebne i zawsze potrzebne będą. I szczerze pisząc, nie mam zielonego pojęcia jak to zrobić. Google mi wcale nie pomaga - obraził się chyba :-) Link do komentarza Udostępnij na innych stronach More sharing options...
Force Napisano Sierpień 2, 2009 Zgłoś Share Napisano Sierpień 2, 2009 No to jak dziecko ma id rodzica to robisz KOD select dzieci.id as 'id', rodzice.id as 'pid', dzieci.name as 'name', rodzice.name as 'pname' from dzieci, rodzice where rodzice.id=dzieci.id Baza tysięcy lotnisk: http://airportsbase.com Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.