![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 13.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam do napisania kod obsługujący mini-bibliotekę internetową, taki mały cms. Powstał problem przy tabelach z danymi tytułów książek i autorów: acms_library_titles (książki) acms_library_authors (autorzy) Jak wiadomo, każdy autor może napisać wiele książek ale także jedna książka może mieć wielu autorów. W moim systemie chciałbym zawrzeć dane n.t. wszystkich autorów danej książki, toteż postanowiłem tabelę acms_library_authors opatrzyć tylko w dane dot. samego autora a w acms_library_title jest pole authorid, które staje się relacyjne wobec tabeli z autorami. Jak skonstruować tabelę z książkami tak, aby można było zapisać kilku autorów (ich ID): a) czy pole authorid zrobić jako VARCHAR i wpisywać tam np. 09, 12, 16 (i jak to później odkodować w php?) B) czy pole authorid powielić na kilka np. author1id, author2id, author3id... (tak miałem w starym systemie) c) czy też może macie inny pomysł? Ufff, się napisałem :-) Proszę o pomoc. Ten post edytował atchor 29.12.2006, 21:45:15 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 472 Pomógł: 7 Dołączył: 7.12.2005 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Ja standardowo autorów zapisywałbym w postaci: id | nazwisko a autorów do danej książki przypisywał poprzez wpisanie id'ów po przecinkach - resztę niech zrobi
w php. Ten post edytował cadavre 30.12.2006, 01:16:23 -------------------- Silesian PHP User Group - www.spug.pl
Symfony2, OAuth2, budowanie API - masz pytania? Pisz! |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 13.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
fajnie, dzieki ale teraz powstal problem, jak wydobyte z bazy ID, czyli np. sekwencję 1,2 (przecinek jako separator) zamienić na instrukcję pobrania z tabeli autorów rekordów o ID=1 i ID=2??
Ja mom takie cuś ale polecenie chyba nie obsługuje tablicy :/ Jak przekształcić polecenie pobranai z bazy?
Cytat Nieznana kolumna 'Array' w where clause
Ten post edytował atchor 30.12.2006, 11:51:04 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 23.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
Lepiej stworzyć sobie jeszcze jedną tabele, np.
acms_library_authors_titles author_id (unikalne ID autora), title_id (unikalne id książki) Która będzie łączyła autorów z książkami. Później już łatwo wyciągać z tego wszystko, czego chcemy, np. tak jak w przykładzie autorów danej książki:
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 548 Pomógł: 2 Dołączył: 19.07.2003 Ostrzeżenie: (0%) ![]() ![]() |
witam
można jeszcze użyć FIND_IN_SET w mysql ale rozwiązanie z tabelą pośredniczącą jest dużo bardziej elastyczne i raczej to polecam pozdrawiam -------------------- Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 13.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
fajnie, dzieki, ale jak teraz wyswietlic te dane po przecinku? uzywac w ogole polecenia mysql_fetch_array?
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 23.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
Które dane chcesz wyświetlać po przecinku?
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 13.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
no autorów
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 472 Pomógł: 7 Dołączył: 7.12.2005 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Przy użyciu dodatkowej tabeli nic nie zapisuje po przecinku jak ja sugerowałem. Każda książka bowiem może mieć kilka wpisów w tej dodatkowej tabeli. O ile sam dobrze zrozumiałem założenie...
-------------------- Silesian PHP User Group - www.spug.pl
Symfony2, OAuth2, budowanie API - masz pytania? Pisz! |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 13.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
No chodzi tak szczegółowo o to, żeby teraz wyświetlić autorów do książki wg przykładu:
Tytuł: ble ble ble Autor: Jan Kowalski, Maria Kowalska, Zbigniew Polak |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 23.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
A z przecinkiem na końcu spróbuj sobie poradzić sam ;-) |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 13.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
a co ze zwykłym JOIN, nie da się połączyć po prostu dwóch tabel?
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 16.06.2025 - 23:12 |