![]() |
![]() ![]() |
![]() |
![]()
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 ![]() A nawet z użyciem kilu zapytań będzie kłopotliwe - jak się to robi ![]() 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: 62 Pomógł: 0 Dołączył: 25.12.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
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 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 62 Pomógł: 0 Dołączył: 25.12.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
moja pomylka masz racje dostaniesz dwa rekordy
Gdaq |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 5.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Nie da się wyświetlić n-wierszy (rekordów) w jednym.
![]() |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 27.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
w zasadzie spodziewałem się takiej odpowiedzi
ale problem pozostaje, jak ‘standardowo’ (poprawnie) pobiera się dane z baz o strukturze wiele do wielu dwie z możliwości jakie przychodzą mi do głowy to: I. pobranie wszystkich potrzebnych danych (np. z przykładowej tabeli ksiazka) a następni dla każdego idKsiazki wyciągnięcie danych o autorze (autorach) z tabeli autor poprzez tabele autor_ksiazda; połączenie danych do wyświetlenia za pomoca php ogromnym minusem tego pomysłu jest liczba zapytań > od liczby wyników (książek) II. pobranie wszystkich danych jednym zapytaniem - i tu znów duży minus - spora redundancja danych - dla ksiązki z 3 autorami otrzymam 3 rekordy analogicznie do tego co napisałem w poście powyżej, gdzie większość danych z 2 rekordów jest zbędna - dostałem je już w pierwszym rekordzie także w tym przypadku sporo pracy spada na php przy wyświetlaniu danych czekam na sugestie |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 22.06.2025 - 13:47 |