Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> wiele do wielu, problem z pobraniem wszystkich danych
basurman
post 27.02.2005, 19:27:53
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 questionmark.gif
A nawet z użyciem kilu zapytań będzie kłopotliwe - jak się to robi 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
Go to the top of the page
+Quote Post
gdaq
post 27.02.2005, 23:13:36
Post #2





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 25.12.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


  1. SELECT autorzy.imie, autorzy.nazwisko, ksiazki.tytul, ksiazki.[ilosc stron]
  2. FROM ksiazki INNER JOIN (autorzy INNER JOIN ksiazk_autor ON autorzy.id_autora = ksiazk_autor.id_autora) ON ksiazki.id_ksiazki = ksiazk_autor.id_ksiazki;
Go to the top of the page
+Quote Post
basurman
post 27.02.2005, 23:52:38
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
Go to the top of the page
+Quote Post
gdaq
post 27.02.2005, 23:55:06
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
Go to the top of the page
+Quote Post
jerrys
post 28.02.2005, 11:03:32
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.
smile.gif
Go to the top of the page
+Quote Post
basurman
post 28.02.2005, 19:40:31
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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 22.06.2025 - 13:47