![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 27.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Używając relację wiele do wielu, np.
ksiazka(idKsiazki primary key, tytul, ...) autor(idAutora primary key, imie, nazwisko, ...) autor_ksiazka(idAutora foreign key, idKsiazki foreign key) jako rozwiązanie problemu:jedna książka -> wielu autorów, jeden autor -> wiele książek. Moja baza wymaga (wg mnie) takiej konstrukcji, a o ile wyszukiwanie wg dowolnego parametru nie sprawia tu żadych problemów, to wyświetlenie wszystkich książek wraz z autorami jest chyba niemożliwe za pomocą jednego zapytania (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) A nawet z użyciem kilu zapytań będzie kłopotliwe - jak się to robi (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ZAZNACZAM, ŻE INTERESUJE MNIE ROZWIĄZANIE GDZIE W WYNIKU ZAPYTANIA DLA KAŻDEJ KSIĄŻKI OTRZYMAM TYLKO JEDEN REKORD Do tej pory 'załatwiałem' to w ten sposób, że w tabeli dawałem pola typu enum('Tak', 'Nie') dla kryterium 'zastosowanie' - gdzie jeden model może mieć zarówno jedno, jak i np. 6 różnych zastosowań. To nawet do pewnego stopnie załatwiało sprawę - x kolumn enum('Tak', 'Nie') o nazwie takiej jak zastosowanie. Załatwiało do czasu kiedy okazało się, że nie znam pełnej listy zastosowań, i odkrycie każdego nowego wiązało by się z modyfikacją struktury bazy a co za tym idzie - wszystkich skryptów. Ten post edytował basurman 27.02.2005, 22:07:53 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 27.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
nie jestem teraz w stanie przetestować twojego zapytania gdaq,
ale o ile pamięć mnie nie myli to w jego wyniku dla książki, która ma 2 autorów otrzymam 2 rekordy o tym samym egzemplarzu 1. imie1 nazwisko1 tytuł 366 2. imie2 nazwisko2 tytuł 366 niech mnie ktoś poprawi bo częściej używam OUTER JOIN i być może INNER daje wynik o jaki mi chodzi, czyli coś w rodzaju: imie1 nazwisko1 imie2 nazwisko2 tytuł 366 Ten post edytował basurman 28.02.2005, 00:06:03 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.09.2025 - 20:13 |